сессии и куки в yii
сессии и куки в yii
Подскажите пожалуйста как работать с сесииями в yii?
В интете не одного толкового примера не нашел.
Напишите плз
1)как создать 2 разных сессии и поместить туда значения?
2)как создать куки у посетителя сайта и помещать в них значения?
3)как потом доставить эти значения из сессий и куков?
4)как в js-файлах брать значения их сессий? например при ajax-запросах
Заранее благодарю за ответы
В интете не одного толкового примера не нашел.
Напишите плз
1)как создать 2 разных сессии и поместить туда значения?
2)как создать куки у посетителя сайта и помещать в них значения?
3)как потом доставить эти значения из сессий и куков?
4)как в js-файлах брать значения их сессий? например при ajax-запросах
Заранее благодарю за ответы
Re: сессии и куки в yii
Сессии: http://www.yiiframework.com/doc/api/1.1/CHttpSession. Обращаться к сессии можно так: Yii::app()->session.
Куки: http://www.yiiframework.com/doc/api/1.1 ... Collection. Обращаться к кукам можно так: Yii::app()->request->cookies. Как создавать - описано в документации.
Как из js доставать увы, не помню, но это легко гуглится.
Куки: http://www.yiiframework.com/doc/api/1.1 ... Collection. Обращаться к кукам можно так: Yii::app()->request->cookies. Как создавать - описано в документации.
Как из js доставать увы, не помню, но это легко гуглится.
Re: сессии и куки в yii
читал но там на английском
Re: сессии и куки в yii
напишите плз конкретный пример, чтобы понятно было что какая строчка означает. А то так не понятно в теории, да еще и на английском
Re: сессии и куки в yii
ладно спрошу более конкретно вот есть контролер all_news пишу в нем
Все выводит
далее, хочу получить значиения сессии в другом контролеере all_video
2 раза повторяется одно и то же
Как сделать так чтобы просто можно было бы написать?тем самым получив доступ к переменным сессий
Код: Выделить всё
public function all_news()
{
$session=new CHttpSession;
$session->open();
print_r($session);
$this->render('/index');
}
далее, хочу получить значиения сессии в другом контролеере all_video
Код: Выделить всё
public function all_news()
{
$session=new CHttpSession;
$session->open();
print_r($session);
$this->render('/index');
}
Код: Выделить всё
$session=new CHttpSession;
$session->open();
Код: Выделить всё
print_r($session);
Re: сессии и куки в yii
Вообщето изначально есть сессия у текущего пользователя.
http://www.yiiframework.com/doc/api/1.1 ... ate-detail
http://www.yiiframework.com/doc/api/1.1 ... ate-detail
Как работать с другой сессией я не знаю.
Код: Выделить всё
Yii::app()->user->setState('key', 'value'); // выставить значение для key
Yii::app()->user->getState('key'); // прочитать значение key из сессии пользователя
http://www.yiiframework.com/doc/api/1.1 ... ate-detail
Как работать с другой сессией я не знаю.
Re: сессии и куки в yii
А что это за класс такой user??Apache02 писал(а):Вообщето изначально есть сессия у текущего пользователя.http://www.yiiframework.com/doc/api/1.1 ... ate-detailКод: Выделить всё
Yii::app()->user->setState('key', 'value'); // выставить значение для key Yii::app()->user->getState('key'); // прочитать значение key из сессии пользователя
http://www.yiiframework.com/doc/api/1.1 ... ate-detail
Как работать с другой сессией я не знаю.
Yii::app()->user - как он связан с сесиями???
я думал за сессии отвечает класс CHttpSession????разве нет???или я не прав??уже совсем запутался
Re: сессии и куки в yii
1. CWebUserxoma_204 писал(а):А что это за класс такой user??
Yii::app()->user - как он связан с сесиями???
я думал за сессии отвечает класс CHttpSession????разве нет???или я не прав??уже совсем запутался
2. Он использует стандартный механизм php сессий. http://www.php.net/manual/ru/reserved.v ... ession.php
3. Отвечает. Его нужно использовать если собираетесь использовать отдельный механизм сессий, не связанный с сессией текущего пользователя. Для специфичных задач.
В Class Reference очень удобно сделаны вырезки из исходников фреймворка. У каждой функции, описание которой читаете, можно посмотреть исходник прямо из документации. Очень помогает.
Re: сессии и куки в yii
что это значит??? не понятноApache02 писал(а):xoma_204 писал(а):Отвечает. Его нужно использовать если собираетесь использовать отдельный механизм сессий, не связанный с сессией текущего пользователя. Для специфичных задач.
что значит отдельный механизм сессий не связанный с сессией текущего пользователя??
Сессия же она уникальная для всех, не понятно это предложение
Re: сессии и куки в yii
Сессия это блок данных (массив), который хранится на стороне сервера. Чтобы получить доступ к этим данным нужно знать идентификатор сессии.
PHP предоставляет уже готовый (прозрачный для разработчика) механизм одной сессии:
* Идентификатор сессии хранится в cookies
* При обращении к странице php читает данные текущей сессии или создает новую (если небыло идентификатора) и выдает идентификатор в куках
* Данные сессии хранятся в суперглобальном массиве $_SESSION
Yii использует описанный выше механизм. Его достаточно для подавляющего большинства задач.
Если ОДНА ТЕКУЩАЯ сессия не устраивает, то городите велосипед. Помочь в этом может CHttpSession.
Просмотрел код CHttpSession. Дефолтно это интерфейс ко все той же текущей сессии, но есть возможность расширения. Не уверен, что можно завести 2 экземпляра CHttpSession в пределах одного скрипта.
PHP предоставляет уже готовый (прозрачный для разработчика) механизм одной сессии:
* Идентификатор сессии хранится в cookies
* При обращении к странице php читает данные текущей сессии или создает новую (если небыло идентификатора) и выдает идентификатор в куках
* Данные сессии хранятся в суперглобальном массиве $_SESSION
Yii использует описанный выше механизм. Его достаточно для подавляющего большинства задач.
Если ОДНА ТЕКУЩАЯ сессия не устраивает, то городите велосипед. Помочь в этом может CHttpSession.
Просмотрел код CHttpSession. Дефолтно это интерфейс ко все той же текущей сессии, но есть возможность расширения. Не уверен, что можно завести 2 экземпляра CHttpSession в пределах одного скрипта.
Re: сессии и куки в yii
Я правильно понимаю?Apache02 писал(а):Сессия это блок данных (массив), который хранится на стороне сервера. Чтобы получить доступ к этим данным нужно знать идентификатор сессии.
PHP предоставляет уже готовый (прозрачный для разработчика) механизм одной сессии:
* Идентификатор сессии хранится в cookies
* При обращении к странице php читает данные текущей сессии или создает новую (если небыло идентификатора) и выдает идентификатор в куках
* Данные сессии хранятся в суперглобальном массиве $_SESSION
Yii использует описанный выше механизм. Его достаточно для подавляющего большинства задач.
Человек заходи на сайт -> создается txt файл на сервере ->создается кука у посетителя->из это куки берем уник id соединияем с txt фаликом -> в txt файлике(сессии) находим нужные нам данные -> после закрытия браузера удаляется кука у посетителя и удаляется txt файлик на сервере
Так???
И если нет напишите плз так же по шагам как и что происходит
Я то думал сессии никак не связаны с куками
Re: сессии и куки в yii
Примерно.
1. Человек заходит на сайт (первый раз) -> генерируется уникальный ID -> на сервере создается txt файлик с именем sess_{ID} -> выдается команда браузеру запомнить куку с ID -> переходим к пункту 2.
2. В файлике(сессии) находим нужные нам данные -> Конец.
3. Человек заходит на сайт -> если нет куки, то переходим к пункту 1 -> иначе получаем из куки ID -> ищем файлик sess_{ID} -> если его нет, то переходим к пункту 1 -> переходим к пункту 2.
После закрытия браузера кука возможно удаляется (зависит от настроек браузера и ответов сервера). Сервер может указать браузеру хранить куку после закрытия браузера (так работает галочка "запомнить" при авторизации).
После закрытия браузера файлик сессии точно не удаляется с сервера. Возможно есть механизм, удаляющий устаревшие файлы позже.
Место хранения данных сессии может быть перенастроено например на MySQL или Memcached.
Проблема в том, что между переходами по страницам сайта соединение клиент-сервер рвется, поэтому нет возможности хранить сессию между разными запросами иначе. Поэтому браузеру выдается кука с идентификатором сессии.
1. Человек заходит на сайт (первый раз) -> генерируется уникальный ID -> на сервере создается txt файлик с именем sess_{ID} -> выдается команда браузеру запомнить куку с ID -> переходим к пункту 2.
2. В файлике(сессии) находим нужные нам данные -> Конец.
3. Человек заходит на сайт -> если нет куки, то переходим к пункту 1 -> иначе получаем из куки ID -> ищем файлик sess_{ID} -> если его нет, то переходим к пункту 1 -> переходим к пункту 2.
После закрытия браузера кука возможно удаляется (зависит от настроек браузера и ответов сервера). Сервер может указать браузеру хранить куку после закрытия браузера (так работает галочка "запомнить" при авторизации).
После закрытия браузера файлик сессии точно не удаляется с сервера. Возможно есть механизм, удаляющий устаревшие файлы позже.
Место хранения данных сессии может быть перенастроено например на MySQL или Memcached.
Проблема в том, что между переходами по страницам сайта соединение клиент-сервер рвется, поэтому нет возможности хранить сессию между разными запросами иначе. Поэтому браузеру выдается кука с идентификатором сессии.
Re: сессии и куки в yii
подскажите, как удалить значение сессии. Для получения я использую
для записи я использую
но пытаюсь удалить значение таким образом
почему-то не срабатывает, или есть другой способ?
Код: Выделить всё
Yii::app()->user->getState('menuActive')
Код: Выделить всё
Yii::app()->user->setState('menuActive', $val);
Код: Выделить всё
Yii::app()->user->getState('menuActive',null);
Re: сессии и куки в yii
Удалить конкретную сессию:
Удалить все сессии:
Код: Выделить всё
unset(Yii::app()->session['menuActive']);
Код: Выделить всё
Yii::app()->session->clear();
Re: сессии и куки в yii
Код: Выделить всё
Yii::app()->user->setState('menuActive', null);
Код: Выделить всё
Yii::app()->user->setState('menuActive');
Re: сессии и куки в yii
AlexGas, ваш пример работает, спасибо)