вторник, 14 октября 2008 г.

хранения сесси без куков

При содании wap-версии сайта, мне пришлось отказаться от хранения сесси в куках. Казалось бы нет ничего проще - пишем в .htaccess: 'php_value session.use_trans_sid 1' и идентификатор сессии автоматичеки дописывается ко всем url. Но при редиректе в action он, к сожалению, теряется. Исправить это можно немного дописав функцию redirect класса sfFrontWebController. Как обычно в lib'ах создаем sfMyFrontWebController.class.php с таким содержанием:

class sfMyFrontWebController extends sfFrontWebController
{
public function redirect($url, $delay = 0, $statusCode = 302)
{
if( session_id() != '' && false === strpos($url, session_name()))
{
if( false !== strpos($url, '?') )
$url .= '&'.session_name().'='.session_id();
else
$url .= '?'.session_name().'='.session_id();
}
parent::redirect($url, $delay, $statusCode);
}
}

и регистрируем этот класс в файле factories.yml вместо sfFrontWebController:

all:
controller:
class: sfMyFrontWebController

Теперь сессия не потеряется!

Комментариев нет: