- •Переменные
- •Внешние переменные
- •Константы
- •Типы данных в рнр. Преобразование типов
- •Операторы
- •2. Операторы языка php Операторы выбора/ if...Else
- •Операторы выбора/ Переключатель switch
- •Операторы цикла
- •Операторы цикла/ While
- •Операторы цикла/ Do…while
- •Операторы цикла/ For
- •3. Строковые функции php
- •Функция htmlspecialchars
- •Функции поиска в тексте
- •Функции strlen(), chr() и ord()
- •Trim-функции (функции удаления пробельных символов)
- •Функции форматного вывода. Спецификаторы преобразования
- •Функция sscanf()
- •Функции преобразования кодировки
- •Функции работы с бинарными данными
- •Функции работы с блоками текста
- •Функции объединения/разделения строк
- •Функции сравнения строк
- •Функции работы с url
- •Функции преобразования регистра
- •Заключение к главе 3
- •4. Массивы Инициализация массивов
- •Цикл foreach для обхода массивов
- •Многомерные массивы
- •Функция count()
- •Функция in_array()
- •Функция reset()
- •Функции сортировки массивов
- •Работа с курсором (указатель) массива
- •Функция array_walk()
- •Функции Определения и вызовы функций
- •Время жизни переменной
- •Что такое рекурсия
- •Работа с файлами Открытие файлов
- •Отображение файлов
- •Закрытие файлов
- •Чтение из файлов и запись в файлы Чтение из файлов
- •Запись в файлы
- •Копирование, переименование и удаление файлов
- •Атрибуты файлов
- •Перемещение по файлам
- •Работа с каталогами
- •Методы put и post
- •7. Регулярные выражения
- •Базовый синтаксис и создание регулярных выражений
- •Групповой символ
- •Исключающее выражение
- •Квалификаторы
- •Границы
- •Подвыражения
- •Соответствие началу и концу строки
- •Сопоставление со специальными символами
- •Классы символов
- •Функции для работы с регулярными выражениями
- •Perl-совместимые регулярные выражения
- •8. Сессии и cookie в php Сессии (сеансы) в php
- •Открытие сессии
- •Регистрация переменных сессии
- •Закрытие сессии
- •Пример простой сессии
- •Установка cookies
- •Пример простого приложения с cookies
- •Установка срока годности cookies
- •Удаление cookie
- •Проблемы безопасности, связанные с cookies
- •Установка области видимости cookie
- •Шифрование
- •Ограничение доступа для доменов
- •Отправка cookies по защищенному запросу
- •9. Работа с ftp средствами php Основные возможности php при работе с ftp
- •Соединение с ftp-сервером
- •Регистрация на ftp-сервере
- •Закрытие соединения
- •Загрузка файлов с сервера
- •Другие возможности при работе с ftp
- •Переход в родительский каталог
- •Работа через брандмауэр
- •10. Проверка корректности данных Проверка корректности данных
- •Проверка на пустоту поля
- •Проверка допустимости вводимых данных
- •Удаление html - тегов и обратных слешей
- •11. Пишем гостевую книгу на php
- •Добавление записи
- •Реляционные базы данных
- •Индексы
- •Первичные ключи
- •Способы задания первичного ключа
- •Нормализация базы данных
- •Работа с сервером MySql
- •Язык sql
- •Команды sql
- •Типы полей базы данных
Пример простого приложения с cookies
Давайте создадим простой сценарий, подсчитывающий при помощи cookies количество обращений посетителя к странице.
В cookie с именем counter будет храниться число посещений страницы пользователем:
<?
$counter++;
setcookie("counter",$counter);
echo("Вы посетили эту страницу $counter раз");
?>
Результат выполнения сценария на рис.:
При работе с cookies необходимо учитывать важный момент, заключающийся в том, что cookie надо обязательно устанавливать перед отправкой в броузер каких-либо заголовков, поскольку сами cookies устанавливаются в виде заголовков. Поэтому если установить cookies после какого-либо текста, отправляемого в броузер, то возникнет ошибочная ситуация.
Рассмотрим этот вопрос подробнее, для чего модифицируем код, приведенный в листинге, поместив перед установкой cookie текст:
Если здесь поместить текст, то возникнет ошибка, так как
будет послан заголовок Content-type: text/html.
<?
$counter++;
setcookie("counter",$counter);
echo("Вы посетили эту страницу $counter раз");
?>
Как видно из рис., при выполнении этого сценария выводится сообщение об ошибке:
Заметим, что в этих листингах мы обращаемся к переменной $counter, в которой хранится значение cookie, как к глобальной, что требует наличия включенной директивы register_globals. Если эта директива отключена, то значение, хранящееся в cookie можно получить через глобальные массивы $HTTP_COOKIE_VARS["name"] и $_COOKIE["name"]:
<?
$_COOKIE['counter']++;
setcookie("counter",$counter);
echo 'Вы посетили эту страницу '.$_COOKIE['counter'].' раз';
?>
Поскольку некоторые пользователи отключают cookie в настройках своих браузеров, для корректной работы, в приложение, использующее cookies, необходимо помещать код, проверяющий включены ли cookies у посетителя, и, если нет, то сообщающий ему о необходимости включить cookie:
<?
if(!$cookie)
{
/* посылаем заголовок переадресации на страницу,
с которой будет предпринята попытка установить cookie */
header("Location: $PHP_SELF?cookie=1");
/* устанавливаем cookie с именем "test" */
setcookie("test","1");
}
else
{
if(!$test)
{
echo("Для корректной работы приложения необходимо включить cookies");
}
else
{
/* cookie включены, переходим на нужную страницу */
header("Location: http://localhost/test1.php");
}
}
?>
Установка срока годности cookies
По умолчанию cookies устанавливаются на один сеанс работы с броузером, однако можно задать для них более продолжительный срок существования. Это очень удобное и полезное свойство, поскольку в этом случае пользователю не нужно предоставлять свои данные вновь при каждом посещении сайта.
Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функцииtime и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи:
time
Синтаксис:
time();
Усовершенствованным вариантом функции time является функция mktime:
mktime
Синтаксис:
int mktime ([int hour [, int minute [, int second [, int month [, int
day [, int year [, int is_dst]]]]]]])
Аргумент is_dst этой функции определяет, попадает ли эта дата в период летнего времени и может принимать следующие значения:
-1 (По умолчанию. Означает, что свойство не задано);
0 (Временной интервал не приходится на период летнего времени);
1 (Временной интервал приходится на период летнего времени).
Примеры установки сроки годности cookies:
<?
/* этот cookie действителен в течение 10 мин после создания */
setcookie("name", $value, time() + 600);
/* действие этого cookie прекращается в полночь 25 января 2010 года */
setcookie("name", $value, mktime(0,0,0,01,25,2010));
/* действие этого cookie прекращается в 18.00 25 января 2010 года */
setcookie("name", $value, mktime(18,0,0,01,25,2010));
?>