php: сеансы на основе файлов cookie - PullRequest
5 голосов
/ 11 января 2010

есть ли в каком-либо теле информация / ссылки о том, как интегрировать систему сеансов на основе файлов cookie? Я использовал файл / MySQL, и в настоящее время я использую memcached. я хотел поиграть с сессиями apc, но подумал, что попробую куки, только я мало что знаю об этом.

я полагаю, мне нужно написать собственный класс обработчика сеанса?

1 Ответ

5 голосов
/ 12 января 2010

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

Основные сеансы запускаются с использованием session_start();, вызываемого перед отправкой любого текста в браузер. затем элементы добавляются или удаляются из объекта сеанса с помощью простой индексации массива, например.

$_SESSION['favcolour'] = 'blue'; 

позже ...

$favcolour = $_SESSION['favcolour'];

базовые сеансы только cookie (без локального хранилища) могут быть созданы с помощью вызова

 set_cookie('favcolour','blue'[,other params]);

перед отправкой любого текста в браузер, затем извлекается из суперглобального файла cookie

$favcolour = $_COOKIE['favcolour'];

вам не нужно звонить session_start(), если вы делаете сеансы только с файлами cookie.

необязательные [, другие параметры] более продвинуты и о них можно прочитать здесь http://www.php.net/manual/en/function.setcookie.php

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

DC

все, что вы когда-либо хотели знать о сессиях PHP

http://www.php.net/manual/en/book.session.php

DC

Чтобы повторно использовать код обработки сеанса PHP, вам нужно добавить обработчик записи, используя session_set_save_handler, а затем ничего не делать в этом обработчике. Это потому, что он вызывается после закрытия вывода в браузер, поэтому вы ничего не можете отправить в браузер.

Перед записью данных без заголовка в браузер используйте функции set_cookie и сохраните содержимое массива $ _SESSION (после сериализации и шифрования) в cookie. когда приложения запускаются, вы можете прочитать cookie, десериализовать его и поместить в массив $ _SESSION.

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

DC

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