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>
Выполнить пример »

Проверьте себя с помощью упражнений

Упражнение:

Создайте переменную сессии с именем "favcolor".

session_start();
["favcolor"] = "green";


W3Schools на русском уроки для начинающих для новичков основы языка курсы с нуля язык php сессии в PHP что такое сессии в PHP переменные PHP сессии примеры PHP


warning

Не выкладывайте свой код непосредственно в комментариях, он отображается некорректно. Воспользуйтесь такими сервисами, как jsfiddle.net, codepen.io, liveweave.com, jsbin.com, сохраните код на любом из этих сервисов и в комментариях дайте на него ссылку. Так будет виден и код, и результат.