- •В.С. Романчик
- •Глава 2. Использование php.
- •Глава 3.
- •Введение
- •Возможности php.
- •Инструменты для разработки
- •Как php работает
- •Глава 1. Язык php Типы данных
- •Массивы и инициализация массивов
- •Объектно-ориентированное программирование в php Основные понятия ооп
- •Классы и Объекты
- •Конструкторы и деструкторы
- •Наследование классов и интерфейсов
- •Магические методы
- •Обработка ошибок
- •Ошибки php и директива error_reporting
- •Чтение и запись бинарных файлов
- •Работа с каталогами в рнр
- •MySql – сервер: бд1; бд2; бд3; бд4;
- •Язык запросов sql
- •Операция соединения.
- •Команды sql для создания баз данных и таблиц
- •Выборка данных из таблиц бд
- •Работа с MySql (сохранение данных в базе данных).
- •Работа с MySql занесение и получение данных из базы данных
- •Некоторые улучшения в организации работы с данными
- •Передача данных от клиента к серверу и от сервера клиенту
- •Клиентские методы http get, post, head
- •Обработка html-форм и передача переменных в скрипт.
- •Передача значений переменных по методу get
- •Ниже рассмотрен еще один пример передачи данных из клиентской формы на сервер по методу get
- •Передача данных на сервер по методу post
- •Php и обработка различных форм
- •Примеры обработки форм
- •Работа с e-mail
- •Отправка почты на php (Функция mail)
- •Cookies-наборы: сохраненное состояние
- •Сессии (Сеансы) Переменные сеанса
- •Отмена регистрации сеансовых переменных
- •Работа с сеансовыми переменными
- •Постоянные данные, использующие сеансы и cookie-наборы
- •Вывод графических данных с помощью рнр Основной способ создания изображений
- •Получение информации об изображении
- •Функции рисования прямых и кривых линий
- •Заливка изображений
- •Работа с палитрой изображения
- •Удаление и изменение цветов палитры
- •Создание прозрачности в изображениях
- •Рисование с помощью кистей
- •Использование специальных стилей для заливки
- •Использование шрифтов и вывод строк
- •Манипулирование и копирование изображений
- •Создаём графический информер на php
- •Слияние изображений с помощью gd
- •Включения удаленных файлов
- •Различные приложения и полезные скрипты на php
- •Пример. Определение типа и версии браузера
- •Генератор паролей на php
- •Время выполнения скрипта
- •Календарь
- •Загрузка файла от клиента на сервер
- •Работа с ftp на уровне php
- •Сбор статистики на php
- •Проверка ввода емайл
- •Чтение почты через Web-интерфейс
- •Разработка собственных листов рассылки
- •Рассылаем письма
- •Добавляем адреса в список рассылки
- •Редактирование адресов
- •Автоответчик
- •Почтовые функции в рнр
- •Задания для выполнения
- •Приложение 1. Протокол передачи гипертекстов http
- •Клиентские методы и заголовкиHttp
- •Указатель ссылки ("Referer")
- •Медиа-типы
- •Кодирование
- •Безопасность и авторизация
- •Кэширование содержимого http на стороне клиента
- •Http идентификация с php
- •Сжатие данных в протоколе http
- •Модель ajax: между загруженной в браузер страницей и сервером появляется прослойка - уровень ajax, который обеспечивает следующую последовательность выполнения приложения.
- •Класс xmlHttpRequest
- •Методы класса xmlHttpRequest
- •Свойства класса xmlHttpRequest
- •Создание экземпляра объекта xmlHttpRequest
- •Использование dom
- •Проблема с кешированием
- •Информируйте пользователя
- •Нет принципов написания кода
- •Аутентификация средствами php
- •Отделение клиентская части программы от серверной части и шаблоны
- •Использование шаблонов в php
- •Шаблоны подстановки
- •Создаем свои шаблоны в php
- •Теги, атрибуты, значения
- •Структура документа
- •Разрыв строки
- •Предварительное форматирование
- •Комментарии
- •Физическая и логическая разметка документа
- •«Физические» теги:
- •«Логические» теги:
- •Специальные символы
- •Графика
- •Формы html
- •Метатеги
- •Способы включения каскадных таблиц стилей
- •Синтаксис
- •Группирование
- •Наследование
- •Множественные классы.
- •Селекторы идентификаторов (id-селекторы).
- •Комментарии
- •Свойства шрифтов.
- •Свойства текста.
- •Представление документа в виде специальных областей – блоков
- •Отступы, поля, позиционирование.
- •Границы элементов.
- •Визуальные эффекты
- •Свойства списков
- •Свойства таблиц
- •Псевдоклассы
- •Псевдостили текста
- •Псевдоэлементы
- •Различные свойства
- •Css. Примеры
- •Типы данных
- •Ассоциированные массивы
- •Операторы
- •Подпрограммы
- •Приложение 11. Популярные веб-приложения и фреймворки
- •Фреймворки
Сессии (Сеансы) Переменные сеанса
Сеанс – это цикл операций, обеспечивающих взаимодействие между клиентом и сервером. Сессии TCP состоят из трех этапов: установки соединения, передачи данных, завершения соединения. При старте сессии посетитель сайта получает уникальный номер сессии вида "db17e8ab5892a486f60f208487152348". При этом номер сохраняется в cookies клиента PHPSESSID, а на сервере создается временный файл для хранения переменных сессии /php5/tmp/sess_ db17e8ab5892a486f60f208487152348.
Если, например, требуется, чтобы последующие страницы сайта "запоминали" имя пользователя и пароль, которые он вводит на первой странице, эта информация сохраняется в переменных сеанса в указанном временном файле на сервере. Сеансы используют концепцию, аналогичную с парковкой автомобилей, по которой каждому сеансу назначается "квитанция" ( идентификатор сеанса), которая затем присутствует в каждом запросе.
Когда посетитель перемещается по страницам сайта, его браузер передает на сервер номер сессии из cookies. С помощью php легко получить доступ к файлу с этим номером, в котором хранятся все переменные сессий. Номер сессии в cookies будет жить пока посетитель ходит по сайту и пока не закроет браузер. Переменные сессий хранятся в глобальном массиве $_SESSION. Пример:
<?
// файл 1.php
session_start();
$_SESSION['asd']='aaaaaa';
$_SESSION['name']['qwe']='тест';
?>
<a href="2.php">тест</a>
<?
// файл 2.php
session_start();
print $_SESSION['asd'];
print $_SESSION['name']['qwe'];
?>
В первом файле в сессии будут помещаться переменные, а во втором эти переменные будут получаться из сессии. Чтобы начать работать с сессиями, надо запустить их (session_start();). И после этого появляется доступ к глобальному массиву $_SESSION.
Если номер сессии нельзя передать в cookie браузера (например куки отключены), то номер сессии будет передаваться в ссылках, к которым будет автоматически добавляться. Например test.ru/index.php?PHPSESSID = db17e8ab5892a486f60f208487152348
Отметим, что многие поисковые системы не любят таких ссылок и занижают релевантность страниц. Во избежание этого можно попытаться запретить отображение SID в URL несколькими способами. Если у вас есть доступ к настройкам php.ini, можно отключить использование номера сессии в URL: session.use_trans_sid = 0. Не у всех есть доступ к настройкам php. В некоторых случаях избавиться от SID в ссылке можно используя полный путь в ссылке. То есть если у вас ссылка имеет вид <a href="test.php">тест</a>, то SID будет добавлен автоматически, если использовать полный путь <a href="http://site.ru/test.php">тест</a>, тогда SID не добавится.
Другой вариант, это вообще не стартовать сессии, если не нужно. В php есть константа SID, которая доступна в том случае, если номер сессии не получилось вставить в куки. Значение именно этой константы и добавляется в ссылку. Константа SID имеет строковое значение вида " PHPSESSID= db17e8ab5892a486f60f208487152348". Если номер сессии удалось вставить в куки, то эта константа будет пустой. Значит можно сделать проверку на присутствие значения в этой константе. Если присутствует что-то, то можно отключать сессии.
Если отключены куки и не получается избавиться от SID в ссылке с помощью использования полного адреса, можно сделать SID одинаковым, чтобы не размножать ссылки с уникальными номерами. Рассмотрим пример:
<?PHP
session_start();
if(SID)
{
session_destroy();
session_id('no');
session_start();
session_destroy();
}
?>
После старта сессий проверяем, есть ли что-то в SID. Если в SID есть что-то, значит номер сессии не установился в куки и при определенных настройках сервера добавится в ссылку. С помощью функции session_destroy() разрушим сессию, и удалим файл сессии.
Теперь создаем новый номер сессии, session_id('no');. Сейчас номер сессии будет просто "no". Чтобы новый номер сессии заменил предыдущий, нужно еще раз стартовать сессию(session_start();). И на всякий случай можно разрушить сессию, удалить файл этой новой сессии (session_destroy();). Теперь ко всем ссылкам будет добавляться PHPSESSID=no, но работать эти сессии не будут, будут работать только те сессии, которые смогут установить куки.
В РНР существует несколько способов создания сеанса. Первый метод заключается в прямом указании РНР начать сеанс, используя функцию session_start(). Эта функция не принимает параметров и не возвращает значения. Когда эта функция вызывается, все переменные, ассоциированные с данным сеансом, реконструируются или создаются заново. Второй подход заключается в вызове функции sessionreadonly(), вместо session_start () . При этом все сеансовые переменные создаются заново, любые изменения переменных по окончании выполнения сценария не сохраняются.
Третий способ предусматривает регистрацию переменной с помощью функции session_register(). Эта функция используется только если директива register_globals включена (по умолчанию выключена).
Система PHP имеет для поддержки сеансов $_SESSION[] – суперглобальный массив PHP, который содержит зарегистрированные в данный момент переменные сеанса. Если директива register_globals отключена), только в массиве $_SESSION, можно запоминать сеансовые переменные. При использовании такого метода работы с сеансовыми переменными нет необходимости вызывать функцию session_register ().
Сеансы существуют, пока не выполняется одно из событий: закрывается окно браузера; завершается заданное на сервере максимальное время сеанса; используются такие функции PHP, как session_destroy(). Функция session_destroy() – разрушает все данные, зарегистрированные для текущего сеанса. Эта функция не принимает параметры и уничтожает любые cookie-наборы и данные, ассоциируемые с активным сеансом.
