Intereting Posts
Как проанализировать facebook api XML онлайн, чтобы получить «понравившийся» счет? Почему я не могу войти в magento backend с помощью google chrome помещает маркер в URL безопасно, чтобы предотвратить атаки CSRF в приложениях PHP? Как разрешить ошибку cURL 60: сертификат SSL в Laravel 5 при аутентификации Facebook как удалить обратную косую черту («\») в ответ json с помощью php? Как удалить запись в php, которая имеет составной (многоколоночный) первичный ключ Что такое PDO и почему я должен его использовать? Как зарегистрировать путь в автозагрузке с помощью одного экземпляра. Является ли XMLReader синтаксическим анализатором SAX, парсером DOM или нет? отправка массовых смс в середине zend form для multicheckbox удалять входные данные из меток Триггер не распознает таблицу (Trigger для разбиения содержимого NEW.values ​​на несколько строк для вставки в другую таблицу) Получить переменную из файла PHP с помощью JQuery / AJAX Параметр fgetcsv / fputcsv $ escape полностью нарушен Передача по ссылке третьего параметра в PHP array_walk без предупреждения

Как php знает, чтобы начать новый сеанс

PHP запустит новый сеанс, если браузер закрыт и снова откроется.

Старый файл сеанса по-прежнему хранится в папке сохранения сеанса, но начинается новый сеанс.

Что php ищет в браузере, чтобы знать, что он должен начать новый сеанс?

Я думаю, что я действительно спрашиваю, что именно делает session_start () под капотом

Solutions Collecting From Web of "Как php знает, чтобы начать новый сеанс"

Чтобы просто ответить на ваш вопрос, он ищет файл cookie с именем PHPSESSID, и если в запросе не добавлено куки-файл, выполняется вызов session_regenerate_id для инициализации значения cookie.

Затем cookie настойчиво используется на протяжении всей жизни браузера.

Если не применяются другие настройки, это урезанная версия поведения по умолчанию.

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

Все, что вы хотите знать, уже написано здесь: http://www.php.net/manual/en/function.session-start.php

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

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

В принципе, PHP пишет специальный файл в файловой системе (обычно в каталоге / tmp) и получает данные оттуда.

Идентификатор сеанса ( PHPSESSID ) сохраняется в файле cookie в браузере пользователей. Если ни один не найден / один недействителен, он создает его. Нижеприведенное изображение может помочь вам понять, что вы хотите знать (это из Chrome).

введите описание изображения здесь

Когда PHP получает этот идентификатор сеанса, он ищет ответный сеанс, который сохраняется в сеансе save_path (обычно /tmp на машинах Unix). Затем он дает вам доступ к информации, хранящейся в этом файле сеанса, с использованием супергеллона $ _SESSION .

Файлы cookie сохраняются, только если на странице PHP ничего не выводится до вызова session_start() . Если что-то выводится, файл cookie не сохраняется, и вам нужен другой метод (как упоминалось, SQLite или MySQL ) для хранения этих значений UNIQUE и распознавания и разделения каждого пользователя.