Я только что выполнил реализацию сеанса url в cakephp, я установил в cakephp использование trans_sid, а не куки:
ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
это, вероятно, можно сделать с помощью: http://bakery.cakephp.org/articles/admad/2009/09/02/how-to-bend-cakephp-s-session-handling-to-your-needs и использовал beforefilter дляпрочитать параметр URL-адреса формы идентификатора сеанса и установить из него идентификатор сеанса, а также файл cookie, если идентификатор сеанса не был задан в качестве параметра URL-адреса
// Use sid from post
if (!empty($this->params['url']['sid'])) {
$this->Session->id($this->params['url']['sid']);
}
// Or failover to cookie
else
{
$this->Session->id($this->Cookie->read('CAKEPHP'));
}
Не забудьте переопределить функцию URL-адреса в классе AppHelper
function url($url = null, $full = false) {
return parent::url($url, $full)."/?sid=".session_id();
}
и перенаправление и прошивка в классе AppController
function redirect($url, $status = null, $exit = true) {
$url = $url."?sid=".session_id();
return parent::redirect($url, $status, $exit);
}
function flash($message, $url, $pause = 1, $layout = 'flash') {
$url = $url."?sid=".session_id();
return parent::flash($message, $url, $pause, $layout);
}