Меню
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON PHP КАК
     ❯   

PHP Учебник


PHP Формы


PHP Продвинутый


PHP ООП


MySQL База данных


PHP XML


PHP - AJAX


PHP Примеры


PHP Справочник



PHP Сессии (Sessions)



Что такое PHP-сессия?

Переменные сессии хранят информацию об одном пользователе и доступны на всех страницах одного приложения.

Когда вы работаете с приложением, вы открываете его, вносите изменения, а затем закрываете. Это очень похоже на сессию. Компьютер знает, кто вы. Он знает, когда вы запускаете приложение и когда закрываете его. Но в интернете есть одна проблема: веб-сервер не знает, кто вы и что вы делаете, потому что HTTP-адрес не сохраняет состояние.

Переменные сессии решают эту проблему, сохраняя информацию о пользователе для использования на нескольких страницах (например, вход пользователя, корзины покупок и т.д.).

По умолчанию переменные сессии существуют до тех пор, пока пользователь не закроет браузер.

Совет: Если вам нужно постоянное хранение, вы можете сохранить данные в базе данных.


Функции PHP-сессий

Наиболее важные функции сессий:

  • session_start() - Запускает новую сессию
  • $_SESSION - Хранит и предоставляет доступ к переменным сессии
  • unset() - Удаляет определенную переменную сессии (например, unset($_SESSION["favcolor"]))
  • session_destroy() - Уничтожает все данные, связанные с текущей сессией
  • session_unset() - Освобождает все переменные сессии

Запуск PHP-сессии

Сессия запускается с помощью функции session_start().

Примечание: Функция session_start() должна вызываться в начале каждого PHP-скрипта, до любого HTML-вывода или пробелов!

Суперглобальная переменная PHP $_SESSION используется как для хранения, так и для доступа к переменным сессии, доступным текущему скрипту.

Теперь давайте создадим PHP-страницу с именем "test.php". На этой странице мы запускаем новую PHP-сессию и устанавливаем некоторые переменные сессии:

Пример

<?php
// Запускаем сессию
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// Устанавливаем переменные сессии
$_SESSION["favcolor"] = "зеленый";
$_SESSION["favanimal"] = "кот";
echo "Переменные сессии установлены.";
?>

</body>
</html>
Попробуйте сами »


Получение значений переменных PHP-сессии

Далее мы создаем другую PHP-страницу с именем "test2.php". На этой странице мы получим доступ к информации сессии, которую установили на первой странице ("test.php").

Пример

<?php
// Возобновляем сессию
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// Выводим переменные сессии, установленные на предыдущей странице
if(isset($_SESSION["favcolor"])) {
  echo "Любимый цвет - " . $_SESSION["favcolor"] . ".<br>";
  echo "Любимое животное - " . $_SESSION["favanimal"] . ".";
} else {
  echo "Данные сессии не найдены.";
}
?>

</body>
</html>
Попробуйте сами »

Как это работает? Как он узнает, что это я?

Когда пользователь посещает страницу, которая вызывает функцию session_start(), PHP проверяет наличие существующего идентификатора сессии в браузере пользователя. Если идентификатор сессии не найден, PHP генерирует уникальный случайный идентификатор.

Этот идентификатор (хранящийся в куки с именем PHPSESSID) — единственная информация, хранящаяся на стороне клиента. Данные сессии надежно хранятся на сервере, обычно во временном файле.

При следующей загрузке страницы сервер получает идентификатор сессии из куки и использует его для загрузки данных сессии в суперглобальную переменную PHP $_SESSION. Затем данные сессии становятся доступными текущему скрипту во всех областях видимости.

Другой способ показать все значения переменных сессии для пользовательской сессии — использовать print_r($_SESSION):

Пример

<?php
// Возобновляем сессию
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>
Попробуйте сами »

Изменение переменной PHP-сессии

Чтобы изменить переменную сессии, просто перезапишите ее:

Пример

<?php
// Возобновляем сессию
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// чтобы изменить переменную сессии, просто перезапишите ее
$_SESSION["favcolor"] = "желтый";
print_r($_SESSION);
?>

</body>
</html>
Попробуйте сами »

Уничтожение PHP-сессии

Далее мы создаем другую PHP-страницу с именем "logout.php". Здесь мы удалим все переменные сессии и уничтожим сессию (с помощью session_unset() и session_destroy()):

Пример

<?php
// Возобновляем сессию
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// Удаляем все переменные сессии
session_unset();

// Уничтожаем сессию
session_destroy();

echo "Вы вышли из системы.";
?>

</body>
</html>
Попробуйте сами »

PHP-сессии против Куки

Вот ключевые различия между сессиями и куки:

Сессия (Session) Куки (Cookies)
Данные хранятся на сервере Данные хранятся в браузере
Истекает при закрытии браузера или после бездействия пользователя в течение некоторого времени Может иметь длительный срок действия
Более безопасна, так как данные не хранятся в браузере Менее безопасна, так как данные хранятся в браузере
Более эффективна, не требует постоянной передачи данных между браузером и сервером Менее эффективна, так как данные отправляются с каждым запросом


×

Связаться с отделом продаж

Если вы хотите использовать услуги schoolsw3 как образовательное учреждение, команда или предприятие, отправьте нам электронное письмо:
sales@schoolsw3.com

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, отправьте нам электронное письмо:
help@schoolsw3.com

Schoolsw3 оптимизирован для обучения и подготовки. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно проверяются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего контента.
При использовании Schoolsw3 вы соглашаетесь прочитать и принять наши условия использования,
политику использования файлов cookie и конфиденциальности.

Авторское право 1999- © Copyright. Все права защищены. Schoolsw3 работает на SW3.CSS.