PHP 5 Сессии
Курс по основам языка программирования PHP.
W3Schools на русском языке. Уроки для начинающих
Сессия - это способ хранения информации (в переменных) для использования на нескольких страницах.
В отличие от куки, информация не хранится на компьютере пользователя.
Что такое PHP сессия?
Когда вы работаете с приложением, вы открываете его, вносите некоторые изменения, а затем закрываете его. Это очень похоже на сессию. Компьютер знает, кто ты. Он знает, когда вы запускаете приложение и когда вы закрываете его. Но в Интернете есть одна проблема: веб-сервер не знает, кто вы и чем занимаетесь, потому что HTTP-адрес не поддерживает состояние.
Переменные сессии решают эту проблему путем хранения пользовательской информации, которая будет использоваться на нескольких страницах (например, имя пользователя, любимый цвет и т.д.). По умолчанию переменные сеанса сохраняются до тех пор, пока пользователь не закроет браузер.
Таким образом, переменные сессии содержат информацию об одном пользователе и доступны для всех страниц в одном приложении.
Примечание: Если вам нужно постоянное хранилище, вы можете сохранить данные в базе данных - database.
Начало PHP сессии
Сессия запускается с помощью функции session_start()
.
Переменные сессии устанавливаются с помощью глобальной переменной PHP: $_SESSION
.
Теперь давайте создадим новую страницу с именем "demo_session1.php". На этой странице мы начинаем новую PHP сессию и устанавливаем некоторые переменные сессии:
Пример
<?php
// Начало сессии
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Установите переменные сессии
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Выполнить пример »
Примечание: Функция session_start()
должна быть указана самой первой в HTML-документе. Перед любыми HTML тегами.
Получение значения переменной PHP сессии
Далее мы создаем ещё одну страницу под названием "demo_session2.php". На этой странице мы получим доступ к информации о сессии, которую мы установили на первой странице ("demo_session1.php").
Обратите внимание, что переменные сессии не передаются по отдельности каждой новой странице, а извлекаются из сессии, которую мы открываем в начале каждой страницы (session_start()
).
Также обратите внимание, что все значения переменных сессии хранятся в глобальной переменной $_SESSION
:
Пример
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo сессии, которые были установлены на предыдущей странице
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Выполнить пример »
Другой способ показать все значения переменных сессии для пользовательской сессии - запустить следующий код:
Пример
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
Выполнить пример »
Как это работает? Как он узнал, что это я?
Большинство сессий устанавливают на компьютере пользователя ключ пользователя, который выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12. Затем, когда сессия открывается на другой странице, он сканирует компьютер на предмет наличия ключа пользователя. Если есть совпадение, он обращается к этой сессии, если нет, он начинает новую сессию.
Изменение переменной PHP сессии
Чтобы изменить переменную сессии, просто перезапишите её:
Пример
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// чтобы изменить переменную сессии, просто перезапишите её
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Выполнить пример »
Уничтожение PHP сессии
Чтобы удалить все глобальные переменные сессии и уничтожить сессию, используйте session_unset()
и session_destroy()
:
Пример
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// удалить все переменные сессии
session_unset();
// уничтожить сессию
session_destroy();
?>
</body>
</html>
Выполнить пример »
Не выкладывайте свой код непосредственно в комментариях, он отображается некорректно. Воспользуйтесь такими сервисами, как jsfiddle.net, codepen.io, liveweave.com, jsbin.com, сохраните код на любом из этих сервисов и в комментариях дайте на него ссылку. Так будет виден и код, и результат.