PHP — Сессии

PHP — Сессии

От автора: альтернативный способ сделать доступными данные на разных страницах всего веб-сайта — использовать PHP сессии. Сессия создает файл во временном каталоге на сервере, в котором хранятся зарегистрированные переменные сессии и их значения. Эти данные будут доступны для всех страниц сайта во время этого посещения.

Расположение временного файла определяется параметром с именем session.save_path в файле php.ini. Перед использованием любой переменной сессии убедитесь, что вы установили этот путь. Вот что происходит при открытии сессии,

Сначала PHP создает уникальный идентификатор для этой конкретной сессии, который представляет собой случайную строку из 32 шестнадцатеричных чисел, таких как 3c7foj34c3jj973hjkop2fc937e3443.

Файл-куки PHPSESSID автоматически отправляется на компьютер пользователя для хранения уникальной строки идентификации сессии.

На сервере в указанном временном каталоге автоматически создается файл, который содержит имя уникального идентификатора с префиксом sess_, т. е. sess_3c7foj34c3jj973hjkop2fc937e3443.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Когда PHP-скрипт хочет получить значение из переменной сессии, PHP автоматически получает уникальную строку идентификатора сессии из файла cookie PHPSESSID, а затем ищет во временном каталоге файл с этим именем и выполняет проверку путем сравнения обоих значений.

Сессия заканчивается, когда пользователь закрывает браузер или покидает сайт, сервер завершает сессию по истечении заданного периода времени, обычно 30 минут.

Открытие сессии PHP

Сессия PHP открывается с помощью функции session_start(). Эта функция сначала проверяет открытые сессии, если ни одна сессия не открыта, запускает ее. Рекомендуется поместить вызов session_start() в начало страницы. Переменные сеанса хранятся в ассоциативном массиве с именем $_SESSION[]. Доступ к этим переменным можно получить во время сессии.

В следующем примере мы сначала открываем сессию, затем регистрируется переменную с именем counter, которая увеличивается каждый раз, когда страница посещается во время сеанса. Используйте функцию isset(), чтобы проверить, установлена ли уже переменная сессии или нет. Поместите этот код в файл test.php и загрузите файл несколько раз, чтобы увидеть результат:

<?php
  session_start();
 
  if( isset( $_SESSION['counter'] ) ) {
 $_SESSION['counter'] += 1;
  }else {
 $_SESSION['counter'] = 1;
  }
 
  $msg = "You have visited this page ".  $_SESSION['counter'];
  $msg .= "in this session.";
?>
 
<html>
 
  <head>
 <title>Setting up a PHP session</title>
  </head>
 
  <body>
 <?php  echo ( $msg ); ?>
  </body>
 
</html>

Этот код дает следующий результат: You have visited this page 1in this session.

Удаление сессии PHP

Сессия PHP может быть удалена с помощью функции session_destroy(). Для этой функции не нужны аргументы, и через один вызов можно удалить все переменные сеанса. Если вы хотите удалить одну переменную сессии, вы можете использовать функцию unset(), чтобы отключить ее. Ниже приводится пример, в котором отменяется одна переменная:

<?php
  unset($_SESSION['counter']);
?>

Вызов, который удаляет все переменные сессии:

<?php
  session_destroy();
?>

Включение авто-сессии

Вам не нужно вызывать функцию start_session(), чтобы открыть сессию, при посещении пользователем сайта, если вы установите переменную session.auto_start в файле php.ini.

Сессии без файлов cookie

В некоторых случаях пользователь не разрешает хранить файлы cookie на своем компьютере. Поэтому существует другой способ отправки идентификатора сеанса в браузер.

В качестве альтернативы вы можете использовать константу SID, которая определяется, если сеанс запущен. Если клиент не отправил соответствующий сессии файл cookie, она выглядит следующим образом session_name = session_id. В противном случае она расширяется до пустой строки. Таким образом, вы можете вставлять ее в URL-адреса. В следующем примере показано как правильно регистрировать переменную и как правильно ссылаться на другую страницу с использованием SID.

<?php
  session_start();
 
  if (isset($_SESSION['counter'])) {
 $_SESSION['counter'] = 1;
  }else {
 $_SESSION['counter']++;
  }
 
  $msg = "You have visited this page ".  $_SESSION['counter'];
  $msg .= "in this session.";
 
  echo ( $msg );
?>
 
<p>
  To continue  click following link <br />
 
  <a  href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

Этот код дает следующий результат -

You have visited this page 1in this session.
To continue click following link 

При выводе SID может использоваться htmlspecialchars() с целью противодействию атакам, связанным с перехватом сессий.

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree