2010-01-11 5 views
5

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

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

+0

Я не уверен, что я следую. Вы хотите хранить данные сеанса в файлах cookie? Это хорошая идея? –

+0

Обратите внимание, что файлы cookie могут хранить максимум 4 КБ данных. Как правило, вы не видите хранилище сеансов на основе файлов cookie.Также учтите, что некоторые пользователи полностью отключили файлы cookie или установили ограничительный доступ с помощью политики безопасности браузеров. –

+1

@cballou: Обычные старые сессии обычно также используют файлы cookie. Однако они просто хранят SESSID, а остальные данные хранятся на сервере. Хотя я думаю, что PHP попытается наполнить SESSID параметром 'GET', если файлы cookie отключены. – mpen

ответ

5

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

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

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

позже ...

$favcolour = $_SESSION['favcolour']; 

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

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

, прежде чем какой-либо текст отправляются в браузер, затем извлекается из файла cookie superglobal

$favcolour = $_COOKIE['favcolour']; 

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

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

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

DC

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

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

DC

Для повторного использования кода обработки сеанса РНР вам нужно будет добавить обработчик записи с помощью session_set_save_handler, а затем ничего не делает в этом обработчике. Это потому, что его вызываемый после выхода в браузер закрыт, поэтому вы не можете отправить что-либо в браузер.

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

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

DC

+0

Я, вероятно, не пойду в cookie-only, хотя, особенно если вы не хотите, чтобы пользователи вмешивались (или читали) данные. – mpen

+0

, если у вас очень загруженные сайты, основанные на файлах, слишком ресурсоемкие. но если бы я хотел безопасности выше всех остальных, я бы использовал db, потому что файлы можно читать. – DeveloperChris

+2

Мне не нужно знать, как использовать сеансы. я полностью понимаю это. cookie-сессии (не хранилище идентификаторов в куки-файлах) - это допустимый метод, который минимизирует количество запросов к серверу db/file/cache и сохраняет все данные для сеанса в зашифрованном файле cookie. Думаю, никто здесь не понимает, что я имею в виду. – onassar

Смежные вопросы