PHP session_start () - PullRequest
       1

PHP session_start ()

21 голосов
/ 25 октября 2010

Что это на самом деле?

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

Ответы [ 5 ]

21 голосов
/ 25 октября 2010

Система сеансов PHP позволяет безопасно хранить данные в глобальном массиве $_SESSION.Типичным примером является сохранение идентификатора пользователя в сеансе, когда он вводит свой пароль:

if ($user = try_login($login, $password)) 
  $_SESSION['user'] = $user;

Затем вы можете получить доступ к этой информации на всех других страницах:

if (isset($_SESSION['user']))
  // logged in !
  echo user_name($_SESSION['user']);

данные хранятся на сервере, поэтому нет риска подделки (с другой стороны, следите за использованием вашего диска).

При запуске сеанса текущий запрос использует $_SESSION.Если это первый визит пользователя, массив будет пустым, и для вас будет отправлен новый файл cookie сеанса.

Закрытие сеанса просто не позволяет текущему запросу использовать $_SESSION, но данные остаются в течениеследующие запросы.

Уничтожение сеанса отбрасывает все данные навсегда.Сеансы уничтожаются через определенное время после последнего посещения (обычно около 30 минут).

11 голосов
/ 25 октября 2010

Полагаю, вы хотите знать, что для вас, программиста, означает сессия PHP.

Когда вы выполняете session_start (), вы говорите PHP, что хотите использовать сеанс. Это доступно для вас в виде массива с именем $ _SESSION. Вы можете использовать его, как и любой другой массив, с той разницей, что материал, который вы там помещаете, остается там с одной страницы на другую (при условии, что вы используете session_start () в начале каждой страницы).

Фактический механизм может варьироваться в зависимости от конфигурации (php.ini), но типичная установка может использовать файлы cookie для сеанса. Давайте предположим, что ваш веб-сервер работает на Linux, и вы используете куки. Вы делаете следующее

session_start();
$_SESSION['name']='Bob';

Когда PHP видит это, он создает текстовый файл с полуслучайным именем (например, sess_a3tfkd5558kf5rlm44i538fj07), вставляет туда содержимое $ _SESSION в виде простого текста и затем отправляет cookie пользователю с идентификатором сессии, который используется для поиска файла сеанса (например, a3tfkd5558kf5rlm44i538fj07).

В следующий раз, когда пользователь возвращается, он передает идентификатор сессии в своем cookie-файле, PHP переходит к соответствующему файлу и загружает его содержимое в $ _SESSION.

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

3 голосов
/ 25 октября 2010

PHP session_start запускает ИЛИ возобновляет сеанс HTTP, который довольно хорошо объясняется в этой статье:

http://en.wikipedia.org/wiki/Session_(computer_science)

Концепция HTTP-сеанса не является специфической для PHPон используется во многих (всех?) серверных инфраструктурах HTTP как один из способов, позволяющих сохранять / ассоциировать некоторое состояние в разных запросах / ответах (поскольку HTTP не имеет состояния).Уникальный токен (который часто (но не всегда) хранится в cookie) идентифицирует конкретного клиента, и сервер может связать «сеанс».

Вот еще немного информации о сессиях и PHP, в частности, которые могут помочь: http://www.php.net/manual/en/book.session.php

2 голосов
/ 25 октября 2010

Как сказано в руководстве

session_start() создает сеанс или возобновляет текущий сеанс на основе идентификатора сеанса, переданного с помощью запроса GET или POST или с помощью файла cookie.

Если вы начинаете новый сеанс на странице входа в систему, сеанс изначально пуст. Вы можете сохранить в нем все, что захотите, например, сохранить идентификатор пользователя после входа в систему. Данные сеанса уничтожаются при закрытии сеанса.

Возможно, вы захотите прочитать все главы на страницах руководства по расширению сеанса , а также посмотреть

0 голосов
/ 22 апреля 2017

Вы можете сравнить сессию PHP с cookie, но сессия является гораздо более безопасным способом хранения информации. Cookie хранят данные на компьютере пользователя, но сеанс хранит на сервере во временном файле надежно. Я обсуждал сессию и как ее использовать в одном из своих постов в блоге - Как запустить сеанс PHP, сохранить и получить доступ к данным сессии?

Ниже приведен пример кода хранения данных в сеансе PHP:

<?php
session_start();
$_SESSION["name"] = "John";
?>

Ниже приведен пример получения данных сеанса:

<?php
session_start();
echo $_SESSION["name"];
?>

Приведенный выше код будет отображать имя "Джон".

Источник:

Как запустить сеанс PHP, сохранить и получить доступ к данным сеанса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...