<?php/** * Class LazyHttpSession * Обеспечивает подавление создания сессий PHP * * @author pavel.volyntsev@gmail.com * @link http://copi.st/nMen */classLazyHttpSessionextendsCCacheHttpSession// здесь надо указать супер-класс, используемый в твоём приложении{/** * Подавить создание сессии : открывать сессию PHP только при наличии сессионной куки * @var bool */public$suppressStart=true;publicfunctionopen(){// если включено подавление старта и сессионная кука не найдена, сессию не открыватьif($this->suppressStart&&!isset($_COOKIE[session_name()]))return;// иначе обычное поведение [ CHttpSession::open() ]parent::open();}}
<?php/** * @file protected/config/main.php */// ...$request=new\CHttpRequest;// издержка - требуется дополнительный объект для разбора входящего запроса$uri=$request->getRequestUri();returnarray(// ...'components'=>array(// ...// Настройки для базы данных'session'=>array('class'=>'application.components.LazyHttpSession',// указать класс для работы с сессией// ...'autoStart'=>false,// выключить сессии для анонимных пользователей'suppressStart'=>(// сессию стартовать только при наличии сессионной куки// а также на страницах регистрации, логина или панели администратораfalse===strpos($uri,'/login/')&&false===strpos($uri,'/register/')&&false===strpos($uri,'/admin/')),),// ...),// ...);
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.