freeCodeCamp/guide/russian/php/pp-sessions/index.md

143 lines
5.4 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
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>
```