PHP Сессии
Сессия - это способ хранения информации (в переменных) для использования на нескольких страницах.
В отличие от куки, информация не хранится на компьютере пользователя.
Что такое PHP сессия?
Когда вы работаете с приложением, вы открываете его, вносите некоторые изменения, а затем закрываете его. Это очень похоже на сессию. Компьютер знает, кто вы. Он знает, когда вы запускаете приложение и когда вы заканчиваете работать с ним. Но в Интернете есть одна проблема: веб-сервер не знает, кто вы и чем занимаетесь, потому что HTTP-адрес не поддерживает состояние.
Переменные сессии решают эту проблему путем хранения пользовательской информации, которая будет использоваться на нескольких страницах (например, имя пользователя, любимый цвет и т.д.). По умолчанию переменные сессии сохраняются до тех пор, пока пользователь не закроет браузер.
Т.о., переменные сессии содержат информацию об одном пользователе и доступны для всех страниц в одном приложении.
Совет: Если вам нужно постоянное хранилище, вы можете сохранить данные в базе данных.
Старт PHP сессии
Сессия запускается с помощью функии session_start()
.
Переменные сессии устанавливаются с помощью глобальной PHP переменной: $_SESSION.
Теперь давайте создадим новую страницу с именем "demo_session1.html". На этой странице мы начинаем новую сессию PHP и устанавливаем некоторые переменные сессии:
Пример
<?php
// Старт сессии
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Установить переменные сессии
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Переменные сессии установлены.";
?>
</body>
</html>
Запустить пример »
Примечание: Функция session_start()
должна находиться в самом начале документа. Перед любыми тегами HTML.
Получить значения переменной PHP сессии
Далее мы создаем еще одну страницу под названием "demo_session2.html". На этой странице мы получим доступ к информации о сессии, которую мы установили на первой странице ("demo_session1.html").
Обратите внимание, что переменные сессии не передаются по отдельности каждой новой странице, а извлекаются из сессии, которую мы открываем в начале каждой страницы (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>
Запустить пример »