Php2 Задачи ГК Сохранять добавленное сообщение. Производить проверку добавляемого сообщения перед сохранением. Выводить все сообщения на экран.

Презентация:



Advertisements
Похожие презентации
Php. сам скрипт вывод
Advertisements

Понятие строки. Операции со строковыми величинами. Стандартные процедуры и функции обработки строковых величин. Простые алгоритмы работы со строками на.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
Support.ebsco.com Создание локальной подборки Учебное пособие.
JavaScript Регулярные выражения Введение Создание регулярных выражений Флаги (способы поиска по шаблону) Метасимволы Специальные символы Квантификаторы.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Работа с таблицами в MS Access. Таблицы Единицей хранящейся в БД информации является таблица. Таблица представляет собой совокупность строк и столбцов,
Лекция 11 Тема «Формы » Преподаватель: Халелова Е.Н.
Программирование типовых алгоритмов вычислений Информатика.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Электронная Россия ( ), ЭР-2004 Лекция # 4 Основы использования JavaScript.
Тестирование безопасности или Security and Access Control Testing.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Текстовые файлы. Определение. Файлы символьных данных называются текстовыми файлами (можно также сказать что это «файлы байтов»). Структура текстового.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Транксрипт:

php2

Задачи ГК Сохранять добавленное сообщение. Производить проверку добавляемого сообщения перед сохранением. Выводить все сообщения на экран.

Модули config.php - здесь будут храниться общие настройки гостевой книги. base.txt - файл, где будут храниться все сообщения, наша своеобразная база данных. guest.php - здесь будет содержаться непосредственно наш скрипт.

guest.php Гостевая книга

function show_form() { ?> Имя Сообщение

config.php

guest.php function save_mess() { global $name, $ , $mess, $base; $date = date("d.m.y - H:i:s"); $text = $name."^^".$ ."^^".$date."^^".$mess."\n"; $fp = fopen($base,"a"); fputs($fp, $text); fclose($fp); }

config.php $MessOnScreen = 10; Ограничение по кол-ву сообщений

guest.php function show_mess() { global $base, $MessOnScreen; $file = file($base); $file = array_reverse($file); echo " "; if(sizeof($file) < $MessOnScreen) $MessOnScreen = sizeof($file); for ($i = 0; $i < $MessOnScreen; $i++) { $mess = explode("^^",$file[$i]); ?>

Написал: ".$mess[0]." "; echo " "; echo $mess[2]; ?>

Функцией file() получаем массив, где в каждом элементе содержится строка с одним "блоком" - именем писавшего, адресом и сообщением. Изменяем порядок элементов на обратный, так что самая последняя запись становится у нас первым элементом массива. Сравниваем количество элементов в $file (количество сообщений) с указанным в $MessOnScreen лимитом, и если оно меньше этого значения, то $MessOnScreen устанавливаем в число элементов $file.

выполняется цикл вывода сообщений. С каждым проходом цикла значение переменной цикла увеличивается на единицу. Таким образом самые свежие сообщения (те, что были приписаны позже всех и находятся внизу файла- базы) выведутся первыми, а более старые - последними.

переменной $mess присваиваем массив с элементами: 0-ой элемент - имя 1-ый элемент - адрес электронной почты 2-ой элемент - время добавления сообщения 3-й элемент - само сообщение

вывод запись эквивалентна

function check_mess() { global $name, $ , $mess; $mess=trim($mess); $ =trim($ ); $name=trim($name); $name = htmlspecialchars($name); $ = htmlspecialchars($ ); $mess = htmlspecialchars($mess); $mess = str_replace("\n"," ",$mess);

trim() отрезает все пустые символы (пробелы, переводы строк, символы табуляции) в начале и в конце строк. str_replace заменяет с помощью функции все символы перевода строки на тег. htmlspecialchars() обрабатывает все специальные символы HTML, то есть символ < переходит в &lt; и так далее

function output_err($num) { global $err; ?> Oшибка!

В файле config.php в массиве $err будут перечислены сообщения для вывода при соответствующей ошибке. Обратите внимание, что мы при помощи функции exit() прекращается работа скрипта после вывода сообщения об ошибке

if (empty($name)) output_err(2); if z]{2,3}/i", $ )) { output_err(1); } if (preg_match("/[^(\w)|(\x7F- \xFF)|(\s)]/",$name)) output_err(2); }

проверить, чтобы был вида проверить имя: оно должно содержать только буквы латинского и русского алфавита и знак подчеркивания (_). при несоблюдении этих условий задействуется функция output_err() с аргументом, представляющим собой индекс массива $err для соответствующей ошибки.

config.php $err[1] = "Неверно введен "; $err[2] = "Неверно введено имя";

guest.php function check_for_length() { global $mess, $ , $name, $MessLength; if (strlen($mess)>$MessLength) output_err(3); $ =substr($ , 0, 21); $name=substr($name, 0, 22); }

сверяется длина сообщения с указанной в переменной $MessLength с помощью функции strlen(), которая возвращает количество символов в строке используется функцию output_err() в случае превышения длины сообщения над лимитом

config.php $MessLength = 1000; $err[3] = "Недопустимая длина сообщения";

guest.php function check_mess_for_flud() { global $mess,$base; $file=file($base); $file=implode("",$file); $mess=preg_quote($mess); if (eregi($mess, $file)) output_err(4); $mess = stripslashes($mess); }

получается массив строк файла-базы с помощью функции file() массив объединяется в одну переменную "квотируется" сообщение пользователя смотрим, встречается ли этот текст в базе или нет если встречался, выводится ошибку возвращается текст в переменной $mess в первоначальное состояние, то есть убирает все обратные слеши \ перед специльными символами, которые были добавлены функцией preg_quote

config.php $err[4] = "Такое сообщение уже существует";

guest.php function del_mess_from_file() { global $base, $MessInFile; $file = file($base); $k = 0; if($MessInFile

$fp=fopen($base,"w"); for($i=0; $i

config.php $MessInFile = 20;

function check_mess() { global $name, $ , $mess; $mess=trim($mess); $ =trim($ ); $name=trim($name); $name=htmlspecialchars($name); $ =htmlspecialchars($ ); $mess=htmlspecialchars($mess); $mess = str_replace("\n"," ",$mess);

check_for_length(); //добавили if (empty($name)) output_err(2); if z]{2,3}/i", $ ))output_err(1); if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$name)) output_err(2); check_mess_for_flud(); //добавили del_mess_from_file(); //добавили }

if ($mess) { check_mess(); save_mess(); } show_mess(); show_form(); ?>

В PHP предусмотрено два способа передачи ID сессии (сокращенно SID): Через метод GET. Тогда посетитель будет видеть в своем броузере адресную строку следующего типа: bcd4e1e2ef5ec57fc83a69bba86 Через Cookie. Здесь, соответственно, посетитель не будет видеть признаков существования сессии, SID передается через Cookie.

Любая сессия открывается с помощью функции session_start(), создающей специальный служебный файл с именем, соответствующим ID сессии, в который впоследствии будут записаны все данные, связанные с текущей сессией. Место размещения этих файлов зависит от настроек PHP. Так что если вы используете в своих скриптах сессии, не забывайте иногда подчищать директорию с этими временными файлами, так как там со временем может накопиться солидное количество ненужных файлов.

запись данных в сессию функция session_register(). Она сохраняет в файл текущей сессии значения указанных переменных

session_start(); session_register('name', 'birth'); $name = "Вася Пупкин"; $birth = "4 марта";

Обратной функции session_register() является функция session_unregister(), которая удаляет данные из текущей сессии. Эта функция используется довольно редко, но иногда бывает очень полезной. Например, в том случае, если вы регистрируете в сессию большое количество переменных, чтобы не перезагружать файл текущей сессии, можно удалить оттуда уже ненужные значения.

Дополнительные функции работы с сессиями session_id session_name session_destroy

session_start(); echo session_name(); session_name("MySession"); echo session_name();

Механизм отправки HTTP заголовков в PHP header("HTTP заголовок", необязательный параметр replace); должна быть вызвана в самом начале документа Опциональный параметр replace может принимать значения типа bool (true или false) и указывает на то, должен ли быть замещен предыдущий заголовок подобного типа, либо добавить данный заголовок к уже существующему

Опциональный параметр replace может принимать значения типа bool (true или false) и указывает на то, должен ли быть замещен предыдущий заголовок подобного типа, либо добавить данный заголовок к уже существующему. функция headers_sent(), которая в качестве результата возвращает true в случае успешной отправки заголовка и false в обратном случае.

Cache-control. "Cache-control: " значение Заголовок управления кешированием страниц. Вообще, данная функция является одной из самых распространенных в использовании заголовков. no-cashe - Запрет кеширования. Используется в часто обновляемых страницах и страницах с динамическим содержанием. Его дейсвтие подобно META тегу "Pragma: no- cache". public - Разрешение кеширования страницы как локальным клиентом, так и прокси-сервером. private - Разрешение кеширования только локальным клиентом. max-age - Разрешение использования кешированного документа в течение заданного времени в секундах. header("Cache-control: private, max-age = 3600") /* Кеширование локальными клиентами и использование в течение 1 часа */

Expires "Expires: " HTTP-date Устанавливает дату и время, после которого документ считается устаревшим. Дата должна указываться в следующем формате (на английском языке): День недели (сокр.) число (2 цифры) Месяц (сокр.) год часы:минуты:секунды GMT Fri, 09 Jan :00:00 GMT Текущее время в этом формате возвращает функция gmdate() в следующем виде: echo gmdate("D, d M Y H:i:s")."GMT";

Last-Modified "Last-Modified: " HTTP-date Указывает дату последнего изменения документа. Дата должна задаваться в том же формате, что и в случае с заголовком Expires. Данный заголовок можно не использовать для динамических страниц, так как многие серверы (например, Apache) для таких страниц сами выставляют дату модификации. Возможно сделать страницу всегда обновленной: header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

Location "Location :" абсолютный URL Полезный заголовок, который перенаправляет броузер на указанный адрес. Его действие сравнимо с META тегом Refresh: Например, этот заголовок может быть использован так: if ($login != $admin_login) header("Location: else header("Location: if (!headers_sent()) exit("Произошла ошибка! Пройдите авторизацию заново");

Классы в PHP Класс служит шаблоном для объекта. Он создается следующим образом: class Myclass { // определение класса }

class Array_class { var $array = array(); // Определение свойства function getUniqSum() { // Получает сумму уникальных элементов return array_sum(array_unique($this->array)); } function getSortedMerge() { /* Возвращает отсортированный массив из ключей и элементов массива */ $result = array_merge(array_keys($this->array), array_values($this->array)); sort($result); return $result; } }

class Advanced_array extends Array_class { function advanced_array($size) { /* заполняет массив подряд идущими числами, чередуя их знаки */ $z = 1; for ($i = 0; $i < $size; $i++) { $this->array[$i] = $i *$z; $z = - $z; } }

function getSizeofMerge() { /* возвращает число неповторяющихся элементов массива, полученного getSortedMerge() */ $merge = $this->getSortedMerge(); return sizeof(array_unique($merge)); } }

$my = new Array_class; $my->array = array(1, 2, 6, 1); echo $my->getUniqSum(); $my = new Advanced_array(4); echo $my->getSizeofMerge();

создаем новый экземпляр класса Array_class определяем его свойство array выводим сумму элементов без учета повторяющихся создаем экземпляр класса Advanced_array, который наследует все свойства и методы Array_class

Основы MySQL