Работа с сессиями на PHP
Сессия — сеанс работы с сайтом PHP. Механизм сессий обеспечивает долговременное сохранение некоторой информации при переходе между страницами сайта.
Кратко
session_start(); $_SESSION['name'] = 'value'; echo $_SESSION['name']; unset($_SESSION['username']); session_unset(); session_destroy();
Примеры
<?php session_start(); $_SESSION['username'] = "Василий"; echo 'Привет, ' . $_SESSION['username']; ?>
<?php session_start(); echo $_SESSION['username'] . ', мы за тобой следим!'; ?>
<?php session_start(); if ($_SESSION['username'] == 'Василий') { echo 'Василий, здравствуй, мы уже знакомы!'; } else { echo 'Где же Василий?'; }; ?>
<?php session_start(); session_unset(); session_destroy(); ?>
Сессии и cookie
Cookie (куки, печенье) — небольшой фрагмент данных, хранимый браузером для определенного сайта и пересылаемый серверу с каждым http-запросом. Куки — основной способ поддержания сессий на PHP.
Технология
1. Сервер, желая установить новую сессию, генерирует идентификатор и высылает его в виде нового значения cookie на сторону клиента
2. Клиент (браузер), обращаясь к страницам сайта, каждый раз предъявляет cookie (сообщает идентификатор сессии)
3. Сервер, получив идентификатор сессии восстанавливает из базы данных (из файлов) значения переменных, ранее сохраненных для этой сессии
Особенности cookie
1. Объем — до 4096 байт на каждую cookie. Количество cookie ограничено (зависит от браузера — не менее 300 cookie для браузера и 20 cookie на сайт)
2. Куки имеют срок действия (дата истечения или закрытие браузера)
3. Куки «привязаны» к домену и пути
Примеры
Set-Cookie: name=newvalue; expires=date; path=/; domain=.example.org Set-Cookie: userid=asergeev; expires=Fri, 15 Dec 2017 23:59:59 GMT; path=/; domain=.vspu.ru Set-Cookie: color=red; path=/books; domain=mif.vspu.ru Set-Cookie: userid=asergeev; expires=Fri, 15 Dec 2017 23:59:59 GMT;
Работа с cookie в PHP
setcookie("name", $value); setcookie("name", $value, time()+3600); setcookie("name", $value,time()+3600, "/folder/", ".vspu.ru"); $_COOKIE['name']
Настройка cookie для сессий
session_set_cookie_params(lifetime, path, domain, secure) session_set_cookie_params(3600); session_set_cookie_params(3600, '/', 'vspu.ru'); session_set_cookie_params(3600, '/', 'vspu.ru', true);
Загрузка файлов на PHP-сайт
Два вопроса:
1. Создание формы
2. Обработка загруженных файлов
Создание формы
<form action="index.php" method="POST" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="submit" value="Загрузить"> </form>
<form action="index.php" method="POST" enctype="multipart/form-data"> <input type="file" name="files[]" multiple> <input type="submit" name="submit" value="Загрузить"> </form>
Обработка загруженных файлов
1. Проверить, что загружен новый файл
2. Определить (задать) имя файла и место его хранения
3. Переместить файл в место хранения
Информация о файле — в массиве $_FILES
$_FILES['file']['name'] - имя файла до его отправки на сервер $_FILES['file']['tmp_name'] - имя файла во временном каталоге $_FILES['file']['size'] - размер файла в байтах $_FILES['file']['type'] - MIME-тип принятого файла, например: image/gif, text/html $_FILES['file']['error'] - код ошибки (0 - ошибки нет)
Примеры обработки:
if (isset($_FILES['file']['tmp_name'])) { $file = basename($_FILES['file']['name']); $path = "folder/" . $file; if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) { echo "Файл успешно загружен"; } else { echo "Ошибка загрузки файла"; } }
foreach ((array)$_FILES["files"]["tmp_name"] as $key => $tmp_name) { if ($_FILES["files"]["error"][$key] === UPLOAD_ERR_OK) { $file = $_FILES["files"]["name"][$key]; $path = "folder/" . $file; move_uploaded_file($tmp_name, $path) } }
Примеры использования сессий в PHP
Примеры:
1. Пример загрузки одного файла
2. Пример загрузки нескольких файлов
Контрольная работа по предыдущей лекции
Вопрос: Приведите пример работы с базой данных из сценария PHP.
Алексей Н. Сергеев