Шаблоны проектирования PHP

Шаблоны проектирования PHP
PHP — Сессии

Альтернативный способ сделать данные доступными на различных страницах всего веб-сайта — использовать сеанс PHP.

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

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

Когда сеанс начинается, происходит следующее:

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

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

  • Файл автоматически создается на сервере в назначенном временном каталоге и имеет имя уникального идентификатора с префиксом sessions_, т.е. sess_3c7foj34c3jj973hjkop2fc937e3443.

Когда сценарий 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 значение 1 в файле php.ini .

Сессии без куки

Может быть случай, когда пользователь не разрешает хранить файлы cookie на своей машине. Итак, есть еще один метод отправки идентификатора сеанса в браузер.

В качестве альтернативы вы можете использовать постоянный SID, который определяется, если сеанс запущен. Если клиент не отправил соответствующий файл cookie сеанса, он имеет форму имя_сеанса = идентификатор_сеанса. В противном случае он заменяется пустой строкой. Таким образом, вы можете безоговорочно встраивать его в 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 

В htmlspecialchars () может быть использован при печати SID для того , чтобы предотвратить связанные с XSS атак.

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки