143 lines
5.4 KiB
Markdown
143 lines
5.4 KiB
Markdown
|
---
|
|||
|
title: PHP Sessions
|
|||
|
localeTitle: Сеансы PHP
|
|||
|
---
|
|||
|
# Сеансы PHP
|
|||
|
|
|||
|
Сессия - способ хранения информации (в переменных), которая будет использоваться на нескольких страницах.
|
|||
|
В отличие от файла cookie, информация не сохраняется на компьютере пользователя.
|
|||
|
|
|||
|
## Что такое сеанс PHP?
|
|||
|
|
|||
|
Когда вы работаете с приложением, вы открываете его, делаете некоторые изменения и закрываете его. Это очень похоже на сеанс.
|
|||
|
Компьютер знает, кто вы. Он знает, когда вы запускаете приложение и когда закончите.
|
|||
|
Но в Интернете есть одна проблема: веб-сервер не знает, кто вы и что вы делаете, потому что HTTP-адрес _не поддерживает состояние_ .
|
|||
|
|
|||
|
Переменные сеанса решают эту проблему, сохраняя информацию пользователя, которая будет использоваться на нескольких страницах (например, имя пользователя, любимый цвет и т. Д.).
|
|||
|
По умолчанию переменные сеанса сохраняются до тех пор, пока пользователь не закроет браузер.
|
|||
|
|
|||
|
**Переменные сеанса содержат информацию об одном пользователе и доступны для всех страниц в одном приложении.**
|
|||
|
|
|||
|
**Примечание.** Если вам требуется постоянное хранилище, вы можете захотеть сохранить данные в базе данных.
|
|||
|
|
|||
|
## Начало сеанса PHP
|
|||
|
|
|||
|
Сессия начинается с функции start () \_ _session_ .
|
|||
|
Переменные сеанса задаются с помощью глобальной переменной PHP: $ \_SESSION.
|
|||
|
|
|||
|
**Пример:**
|
|||
|
```
|
|||
|
<?php
|
|||
|
// Start the session
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// Set session variables
|
|||
|
$_SESSION["favcolor"] = "blue";
|
|||
|
$_SESSION["favanimal"] = "dog";
|
|||
|
echo "Session variables are set.";
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
**Примечание.** Функция session\_start () должна быть **первой** в вашем документе. **Перед** любыми тегами HTML.
|
|||
|
|
|||
|
Вывод:
|
|||
|
Параметры сеанса установлены.
|
|||
|
|
|||
|
## Получить значения переменных сеанса PHP
|
|||
|
|
|||
|
Обратите внимание, что переменные сеанса не передаются отдельно для каждой новой страницы, вместо этого они извлекаются из сеанса, который мы открываем в начале каждой страницы (session\_start ()).
|
|||
|
|
|||
|
Также обратите внимание, что все значения переменной сеанса хранятся в глобальной переменной $ \_SESSION:
|
|||
|
|
|||
|
**Пример:**
|
|||
|
```
|
|||
|
<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// Echo session variables that were set on previous page
|
|||
|
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
|
|||
|
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
Вывод:
|
|||
|
Любимый цвет - синий.
|
|||
|
Любимое животное - собака.
|
|||
|
|
|||
|
Другой способ показать все значения переменной сеанса для сеанса пользователя - запустить следующий код:
|
|||
|
```
|
|||
|
<?php
|
|||
|
print_r($_SESSION);
|
|||
|
?>
|
|||
|
```
|
|||
|
|
|||
|
### Как это работает?
|
|||
|
|
|||
|
В большинстве сеансов пользовательский ключ на компьютере пользователя выглядит примерно так: 765487cf34ert8dede5a562e4f3a7e12.
|
|||
|
Затем, когда сеанс открывается на другой странице, он сканирует компьютер для пользовательского ключа.
|
|||
|
Если есть совпадение, он обращается к этому сеансу, если нет, он запускает новый сеанс.
|
|||
|
|
|||
|
## Изменение переменной сеанса
|
|||
|
|
|||
|
Чтобы изменить переменную сеанса, просто перепишите ее:
|
|||
|
|
|||
|
**Пример:**
|
|||
|
```
|
|||
|
<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// to change a session variable, just overwrite it
|
|||
|
$_SESSION["favcolor"] = "pink";
|
|||
|
print_r($_SESSION);
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
```
|
|||
|
|
|||
|
## Уничтожьте сеанс PHP
|
|||
|
|
|||
|
Чтобы удалить все глобальные переменные сеанса и уничтожить сеанс, используйте _session_ unset () \_ и _session_ destroy () \_:
|
|||
|
|
|||
|
**Пример:**
|
|||
|
```
|
|||
|
<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
<!DOCTYPE html>
|
|||
|
<html>
|
|||
|
<body>
|
|||
|
|
|||
|
<?php
|
|||
|
// remove all session variables
|
|||
|
session_unset();
|
|||
|
|
|||
|
// destroy the session
|
|||
|
session_destroy();
|
|||
|
?>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
|
|||
|
```
|