Любое тело может объяснить мне, как работает сессия в PHP. например. 3 пользователя вошли в систему gmail. как сервер идентифицирует эти 3 пользователя. каков внутренний процесс.
Сессии состоят из двух компонентов: идентификатора сеанса на стороне клиента и данных сеанса на стороне сервера . Клиенты могут отправлять идентификатор сеанса на сервер как URL-адрес, cookie или даже HTTP-заголовки. Затем сервер использует этот идентификатор сеанса, чтобы найти соответствующие данные сеанса для возврата клиенту.
Вы можете настроить поведение сеанса с помощью различных функций session_
.
Сеансы представляют собой комбинацию данных сеанса на стороне сервера и файла cookie на стороне клиента, причем cookie на стороне клиента содержит ничего, кроме ссылки на правильные данные на сервере. Таким образом, когда пользователь посещает сайт, их браузер отправляет ссылочный код на сервер, который загружает соответствующие данные.
Это может показаться немного неуклюже, чем просто наличие cookie на стороне клиента со всеми вашими данными, но есть несколько преимуществ:
Также важно отметить, что сеансы продолжаются только до тех пор, пока пользователь не закрывает свой браузер, тогда как файлы cookie могут быть настроены так долго. Однако, кроме вышеуказанного, для большинства целей нет большой разницы между данными сеанса и данными cookie.
Ниже приведена очень хорошая статья, в которой объясняется, как сеансы и файлы cookie работают в PHP.
Сессии очень просты.
Когда я войду на ваш сайт, PHP установит стандартный куки-файл браузера с «идентификатором сеанса» – обычно это буквенно-цифровая строка, например 63f1a67cf52b5d2bbd0cbef45e18b242
.
Как и все файлы cookie, мой браузер отправит этот файл cookie на ваш сервер с каждым запросом, который я делаю. Таким образом, ваше приложение теперь знает, что каждый запрос, который поставляется с идентификатором сеанса 63f1a67cf52b5d2bbd0cbef45e18b242
поступает от меня.
Таким образом, если вам нужно хранить любую информацию обо мне, вы можете отслеживать ее под 63f1a67cf52b5d2bbd0cbef45e18b242
. По умолчанию PHP хранит эту информацию в файлах в каталоге /tmp/
, хотя вы можете ее переопределить и хранить в любом месте (например, в базе данных). Важно то, чтобы связать этот идентификатор сеанса с конкретным пользователем.
Я не хочу упрощать вещи. Есть некоторые проблемы (например, что, если злоумышленник видит мой незашифрованный идентификатор сеанса и начинает его использовать сам, он мог бы начать маскарадировать, как и я), и есть некоторые способы смягчить эти проблемы. Но основной механизм хранения идентификатора сеанса в cookie и использование этого для идентификации информации обо мне, хранящейся на сервере, довольно универсален.
Я думаю, что Gmail использует Python, а не PHP.
PHP по умолчанию записывает свои сессии в каталог /tmp
. Он может быть настроен для хранения сеансов в базе данных.
Он идентифицирует сеансы с помощью файла cookie, но также может быть настроен для передачи строки запроса, но он очень уродлив.
Как работает PHP-сессия
Во-первых, PHP создает уникальный идентификационный номер (случайная строка из 32 шестнадцатеричных чисел, например 3c7foj34c3jj973hjkop2fc937e3443) для отдельного сеанса.
Файл cookie PHPSESSID передал этот уникальный идентификационный номер браузеру пользователей, чтобы сохранить этот номер.
Новый файл создает сервер с тем же именем уникального идентификационного номера с префиксом sess_ (т.е. sess_3c7foj34c3jj973hjkop2fc937e3443.)
Веб-браузер отправил этот файл cookie на сервер с каждым запросом.
Если PHP получает этот уникальный идентификационный номер из файла cookie PHPSESSID (по каждому запросу), то поиск PHP во временном каталоге и сравнить это число и имя файла. Если оба они одинаковы, то он извлекает существующий сеанс, иначе создаст новый сеанс для этого пользователя.
Сессия уничтожается, когда пользователь закрывает браузер или покидает сайт. Сервер также завершил сеанс после заданного периода времени сеанса. Это простой механизм, использующий PHP для обработки сеанса. Я надеюсь, что эта статья поможет вам понять, как работает PHP SESSION.
См. Эту статью для получения более подробной информации. Как работает PHP-сессия
При первом открытии веб-страницы (URL-адреса) ваш браузер отправляет запрос на этот сервер, в это время заголовок, не содержащий куки-файл или сеанс для включения, затем после ответов сервера на веб-браузер (User Agent ) сервер может отправить cookie или сеанс, в это время браузер сохранил их для следующего запроса.
Теперь, перезагружая страницу, браузер отправляет куки-файл на сервер (Содержится в заголовке запроса), тогда сервер может получить к нему доступ и проверить его.
Для сеанса: его временный файл cookie, который будет завершен после закрытия окон.
PHP SESSION PHP использует cookie cookie для одной пары ключ-значение, которая называется PHPSESSID , сервер зависит от значения этого ключа и нахождения эквивалентной пары ключ-значение, используя значение PHPSESSID. Использование этого подхода предотвращает какую-то атаку, например дешифрование фактических значений cookie, потому что cookie сохраняет всю пару «ключ-значение» на ПК клиента, который можно увидеть, в то время как сеанс зависит от одной пары ключ-значение.
Функция session_start () определяет верхнюю часть заголовка … это приведет к созданию уникального числа. Сессия – это способ общения с сервером. Хранилище сеансов на стороне сервера и на стороне клиента. Сеанс браузера хранится в файле tmp или файлах cookie.
Файлы cookie сохраняют имя сеанса и значение, которое не помещает данные сеанса. Данные сохраняются сеансом на стороне сервера. когда клиент отправляет запрос серверу … сервер получает идентификатор сеанса и возвращает данные клиенту. Генерация session_id с серверной стороны и session_id – это способ идентифицировать запрос откуда-либо.
Печенье.
Или параметр в URL-адресе. И этот интернет-процесс называется протоколом HTTP.
Функция session_start () генерирует случайный идентификатор сеанса и сохраняет его в файле cookie на компьютере пользователя (это единственная информация о сеансе, которая фактически хранится на стороне клиента.) Имя по умолчанию для файла cookie – PHPSESSID, хотя это может быть изменено в файлах конфигурации PHP на сервере (однако большинство хостинговых компаний оставят его в покое.) Чтобы ссылаться на идентификатор сеанса в вашем PHP-коде, вы должны ссылаться на переменную $ PHPSESSID (это имя файла cookie, помните, что из Cookies? ) Ваш острый ум может удивляться, что происходит, когда вы приходите ко второму проходу через вашу страницу и снова выполняете функцию session_start (). PHP знает, что уже есть сессия о прогрессе и поэтому игнорирует последующие экземпляры session_start ()