Сохранение данных в сессии
Сохранение данных в сессии
Нужно неконфидециальный параметр хранить в сессии, как можно сохранить его, как я и предполагал, стандартное присваивание к массиву $_SESSION не работает. Мне нужно сохранить простое число, для этого никаких классов расширять не нужно. Доступ к этому числу будет через контроллер, в котором и сохранение планируется. Подскажите, может есть какой метод контроллера или простенький класс для работы с сессией. Примеры будут не лишними. Заранее спасибо.
Re: Сохранение данных в сессии
Эмм... А чем не нравится класс CHttpSession?
[Редкие] Записки пещерного человека
Re: Сохранение данных в сессии
My english is not so good
Вот такой код
Дает такой резальтат
Вот такой код
Код: Выделить всё
$session = new CHttpSession;
$session->open();
$session['data'] = 'qwe';
print_r($session);
Код: Выделить всё
CHttpSession Object ( [autoStart] => 1 [behaviors] => Array ( ) [_initialized:private] => [_e:private] => [_m:private] => )
Re: Сохранение данных в сессии
Тем не менее, сейчас еще поигрался с вышеупомянутым классом и понял, что он работает. Только, вероятно, данные кэшируются и не всегда идет корректное отображение данных. Мне же нужно, чтобы данные были динамичными и вообще не кэшировались, так как я работаю с контроллером аякса. Можно как-нибудь отключить кэширование конкретного контроллера?
Re: Сохранение данных в сессии
Можно предотвратить кэширование некоего куска - кэширование динамического содержимогоyegor писал(а):Можно как-нибудь отключить кэширование конкретного контроллера?
[Редкие] Записки пещерного человека
Re: Сохранение данных в сессии
А как получить данные сессии из другого экшина или контроллера?
Делаю так:
в index.php:
$session = new CHttpSession;
$session->open();
в контроллере:
Делаю так:
в index.php:
$session = new CHttpSession;
$session->open();
в контроллере:
Код: Выделить всё
public function actionIndex() {
$session['user_id'] = 22222;
print_r($session['user_id']); //в данном случае выводится 22222
...
}
public function actionTest() {
var_dump($session['user_id']); //а вот здесь уже выводится NULL
...
}
Re: Сохранение данных в сессии
Вобщем не знаю правильно так делать или нет, но смог добраться только так: Yii::app()->session['user_id'];
Тогда еще 1 вопрос, где (в каком файле) и когда лучше стартовать сессию?
Тогда еще 1 вопрос, где (в каком файле) и когда лучше стартовать сессию?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Сохранение данных в сессии
При обращении к Yii::app()->session сессия стартует автоматом.
Нравится Yii? Давайте сделаем его лучше!.
- painfulangel
- Сообщения: 19
- Зарегистрирован: 2011.05.31, 15:17
- Откуда: Санкт-Петербург
Re: Сохранение данных в сессии
Подскажите пожалуйста.
Может ли Yii::app()->session или или CHttpSession сохранять в себя многомерные массивы.
Если да, то каким образом.
пробовал сохранить двумя способами:
1)
2)
посмотрел форум. но таких задач/примеров ни у кого не нашел
Может ли Yii::app()->session или или CHttpSession сохранять в себя многомерные массивы.
Если да, то каким образом.
пробовал сохранить двумя способами:
1)
Код: Выделить всё
$session = new CHttpSession();
$session->open();
$session['hw'][] = 'hello world';
Код: Выделить всё
Yii::app()->session['hw'][]='hello world';
Re: Сохранение данных в сессии
Точно должно работать такоеpainfulangel писал(а):Подскажите пожалуйста.
Может ли Yii::app()->session или или CHttpSession сохранять в себя многомерные массивы.
Если да, то каким образом.
пробовал сохранить двумя способами:
1)2)Код: Выделить всё
$session = new CHttpSession(); $session->open(); $session['hw'][] = 'hello world';
посмотрел форум. но таких задач/примеров ни у кого не нашелКод: Выделить всё
Yii::app()->session['hw'][]='hello world';
Код: Выделить всё
$a = Yii::app()->session['hw'];
$a[] = 'hello world';
Yii::app()->session['hw'] = $a;
- painfulangel
- Сообщения: 19
- Зарегистрирован: 2011.05.31, 15:17
- Откуда: Санкт-Петербург
Re: Сохранение данных в сессии
Спасибо большое!
Все получилось.
Все получилось.
-
- Сообщения: 2
- Зарегистрирован: 2011.10.31, 23:25
Re: Сохранение данных в сессии
Пытаюсь сохранять данные в сессии данные формы между шагами(Форма заполняется в несколько шагов).
Если я получил данные POST, такой тестовый код работает
а если я перешел на второй шаг GET - ом редиректом с первого шага
ничего не считывается.
Код: Выделить всё
private function save ($step, $data)
{
Yii::app()->session->add($step, $data);
}
private function read ($step)
{
Yii::app()->session->itemAt($step);
}
Код: Выделить всё
if(isset($_POST['_Form'])){
$model->attributes = $_POST['_Form'];
$this->save('step1', $model->attributes);
$model->attributes = $this->read ('step1');
а если я перешел на второй шаг GET - ом редиректом с первого шага
Код: Выделить всё
$temp = $this->read('step1');
echo $temp['id'];
ничего не считывается.
Re: Сохранение данных в сессии
чего то недопонимаю, или просто торможу, разбираюсь с сессиями
для примера во вьюхе:
ответ
для примера во вьюхе:
Код: Выделить всё
<?php
Yii::app->session['cart_coast']=1; // - 27я строка
Yii::app->session['products_incart']=2;
echo Yii::app->session['cart_coast'];
echo Yii::app->session['products_incart'];
?>
Код: Выделить всё
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in Z:\home\sushi.local\www\protected\components\views\smcart.php on line 27
Re: Сохранение данных в сессии
Вот так работает:
Что делать чтобы работало тогда вот так:
Код: Выделить всё
$session=new CHttpSession;
$session->open();
$session['1']=1;
echo $session['1'];
?byteasdf писал(а): Точно должно работать такоеКод: Выделить всё
$a = Yii::app()->session['hw']; $a[] = 'hello world'; Yii::app()->session['hw'] = $a;
Re: Сохранение данных в сессии
блин, нашел, нужно поспать по ходу
Yii::app()
а не
Yii::app
Yii::app()
а не
Yii::app
Re: Сохранение данных в сессии
Попал на эту тему, когда сам столкнулся с сессиями в Yii.
Прочитал это все и теперь думаю, зачем так все усложнять? Ведь есть простая запись но нет, разработчики Yii эту конструкцию отключили и теперь для записи капчи в сессию, нужно стучать туда через ООП.
Я большой сторонник KISS-принципа, и для меня такие вещи "страшнее атомной войны", как говорится.
Прочитал это все и теперь думаю, зачем так все усложнять? Ведь есть простая запись
Код: Выделить всё
$_SESSION['var'] = $value;
Я большой сторонник KISS-принципа, и для меня такие вещи "страшнее атомной войны", как говорится.
Последний раз редактировалось igosja 2015.11.19, 11:08, всего редактировалось 1 раз.
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Сохранение данных в сессии
Чего?разработчики Yii эту конструкцию отключили
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
Re: Сохранение данных в сессии
Берем IndexController и пишем в нем:flashimage писал(а):Чего?
Код: Выделить всё
public function actionSetsession()
{
session_start();
$_SESSION['var'] = 1;
}
public function actionGetsession()
{
session_start();
print $_SESSION['var'];
}
site_url/index/setsession
потом
site_url/index/getsession
Во второй вкладке по хорошему должно вывести "1", но нет, пишет "Undefined variable: _SESSION".
Добро пожаловать в мир веб-разработки.
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Сохранение данных в сессии
Вот это да!!! Надо тогда предупредить всех разработчиков, чтобы прекратили использовать эту черную магиюВо второй вкладке по хорошему должно вывести "1", но нет, пишет "Undefined variable: _SESSION".
Добро пожаловать в мир веб-разработки.
https://github.com/thyseus/yii-user-man ... um.php#L82
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.