2013-05-28 4 views
1

Я знаю, что механизм хранения PHP по умолчанию - это файл, обычно в tmp. И session_id переносится в файл cookie.Хранение данных сеанса php в файле cookie

Я также хочу сохранить небольшое количество данных сеанса в файле cookie. (Как и Rails делает по умолчанию.)

Вопрос: Есть библиотека PHP, чтобы справиться с этим для меня или мне нужно свернуть мой собственный, используя session_set_save_handler и т.д.?

Добавлено: CodeIgniter session class в наличии?

+1

Не связывайтесь с PHP куки сессии. Если вы хотите сохранить данные в файле cookie, используйте другой файл cookie. –

ответ

2

Что вы должны спросить себя: почему вы это делаете. При условии, что вы предоставили свой идентификатор сеанса, вы можете получить доступ к любой информации, присутствующей в самом сеансе. Если вы предпочитаете делать это любым другим способом, вам придется сворачивать свою собственную систему сеанса.

Вот несколько пунктов против того, что вы имеете в виду:

  • Cookies имеют максимальный размер (4kb). На самом деле это довольно часто для переполнения файлов CI.
  • Информация на файловом сервере гарантируется защитой от несанкционированного доступа (или с защитой от несанкционированного доступа в качестве вашего сервера). Информация в cookie не является
  • Если это ошибка «OMG DISK READ», которая вас пугает, вы всегда можете связать redis в качестве менеджера сеансов. Это действительно тривиально.
  • Наконец, вы будете иметь значительный питы момент ваш код получает портирован в других

Предполагая, что вы все еще хотите сделать это (вы действительно уверены?), Ответ просто установить другое печенье. Обработчики сеансов PHP лучше не вмешиваться из-за значительного риска бросить 500 штук повсюду, если изменения пойдет не так. Второй файл cookie - ваш лучший выбор.

+0

Спасибо за ваш ответ ... но если это такая плохая идея, почему теперь это значение по умолчанию для Rails? При необходимости шифрование может справиться с проблемой безопасности. ps Я в порядке с использованием второго cookie, я не думал об этом. –

-1

попробовать это

$newdata = array(
        'username' => 'johndoe', 
        'email'  => '[email protected]', 
        'logged_in' => TRUE 
       ); 

$this->session->set_userdata($newdata); 



$this->input->set_cookie($newdata); 
+0

OP не спрашивает, как использовать CodeIgniter –

+0

@DamienPirsy: Это когда вы делаете снимок и/или сообщаете как не ответ. + низкое качество на этом конкретном образце. –

+0

@ SébastienRenauld Я предпочитаю оставить комментарий перед тем, как наложить нижний план (которого я не сделал здесь). Кстати, это ответ и НЕ НЕКОТОРЫЕ (ну, может быть, пограничный) - согласно инструкциям, когда я их читаю, эти флаги могут быть отклонены. Я предпочитаю предупреждать плакат о том, что он, возможно, неправильно понял вопрос, что вполне может быть здесь –

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