Intereting Posts
Есть что-то вроде Cythype Python для PHP? Доступ к библиотекам без необходимости писать расширение? exec () и phantomjs с абсолютными путями Присвоение значения const const ошибке в php Правильный способ получить время веб-сервера и отобразить его на веб-страницах Не удалось создать диаграмму Google с использованием данных таблицы MySQL в качестве источника данных Laravel: Как мне вернуть маршрут маршрута с завершающими косыми чертами? Отправка переменных для функций файловой системы PHP с представлением формы Заполнить ввод файла после формы submit / on form submit error Массив переупорядочения PHP для отображения иерархии родительских / идентификационных данных Как определить, действительно ли файл загружен и сохранен, несмотря на предварительную выборку / кеш браузера? Как я могу использовать библиотеки Perl из PHP? Ссылка: Почему мои «специальные» символы Unicode кодируются странно, используя json_encode? Не удается получить идентификатор строки с помощью pdo swig нет соответствующей функции для перегрузки Правильный способ предотвращения дублирования записей с использованием MySQL или PHP

CodeIgniter session set-cookie duplicated – как решить

ОБНОВИТЬ:

Мне интересно, может ли кто-нибудь просмотреть мой ответ и посмотреть, есть ли в нем какие-либо дыры.

Существует хорошо документированная проблема при использовании кодировщика и сеансов на:

Дублированные поля «set-cookie: ci-session» в заголовке с помощью codeigniter

В итоге codeigniter делает set-cookie каждый раз, когда вызывается set_userdata.

Я нашел частичное решение по адресу:

http://ha17.com/1745-bigip-f5-header-max-size-collides-with-codeigniters-bizarre-session-class/

Единственная проблема с этим решением заключается в том, что код необходимо вставлять повсюду. Есть ли простой способ очистить все заголовки? Я немного изменил код, чтобы удалить php-ошибки, но есть ли способ использовать крючок или что-то в этом роде?

<?php class MY_Controller extends CI_Controller { public function __construct() { parent:: __construct(); } //See (modified from) http://ha17.com/1745-bigip-f5-header-max-size-collides-with-codeigniters-bizarre-session-class/ protected function _removeDuplicateCookieHeaders () { // clean up all the cookies that are set... $headers = headers_list(); $cookies_to_output = array (); $header_session_cookie = ''; $session_cookie_name = $this->config->item('sess_cookie_name'); foreach ($headers as $header) { list ($header_type, $data) = explode (':', $header, 2); $header_type = trim ($header_type); $data = trim ($data); if (strtolower ($header_type) == 'set-cookie') { header_remove ('Set-Cookie'); $cookie_value = current(explode (';', $data)); list ($key, $val) = explode ('=', $cookie_value); $key = trim ($key); if ($key == $session_cookie_name) { // OVERWRITE IT (yes! do it!) $header_session_cookie = $data; continue; } else { // Not a session related cookie, add it as normal. Might be a CSRF or some other cookie we are setting $cookies_to_output[] = array ('header_type' => $header_type, 'data' => $data); } } } if ( ! empty ($header_session_cookie)) { $cookies_to_output[] = array ('header_type' => 'Set-Cookie', 'data' => $header_session_cookie); } foreach ($cookies_to_output as $cookie) { header ("{$cookie['header_type']}: {$cookie['data']}", false); } } }