Как заставить работать Zend Framework сессию, если куки отключены?

Я начинаю сессию с

$sess = new Zend_Session_Namespace('MySession');

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

2 ответа

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

// make sure cookies are enabled
$.cookie('test_cookie', 'cookie_value', { path: '/' });
if ($.cookie('test_cookie') != 'cookie_value') {
    noty({"text":"Cookies must be enabled to log in. <a href='http://support.google.com/accounts/bin/answer.py?hl=en&answer=61416' class='noty_link'>Click here to learn how to enable cookies.</a>","layout":"top","type":"error","textAlign":"center","easing":"swing","animateOpen":{"height":"toggle"},"speed":500,"closable":false, "closeOnSelfOver":false, "timeout":"", "closeOnSelfClick":false});
}

этот фрагмент кода использует плагины jquery.cookie.js (https://github.com/carhartl/jquery-cookie) и noty (http://needim.github.com/noty/)

Вы можете установить для session.use_only_cookies значение "0" и добавить идентификатор сеанса к URL-адресу в своем коде, чтобы к каждой ссылке или перенаправлению было добавлено что-то вроде "session_id=4b5fe6a4019a8cd7fc4326664e9e03ae", добавленное к URL-адресу.

Этот подход имеет много проблем, самая большая из которых заключается в том, что если пользователь решит поделиться URL-адресом, скажем, в Face book, он / она скопирует весь URL-адрес из браузера (включая идентификатор сеанса), и каждый, кто нажмет эту ссылку, получит сеанс пользователя.

Посмотрите на это.

Другие вопросы по тегам