Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 15 Май 2009 01:43:06 Заголовок сообщения: Доступ к одной переменной сессии из двух разных контроллеров |
|
|
Доброй ночи(дня) всем.
Помогите разобраться:
Есть два контроллера - Controller1 и Controller2.
В первом есть методы: login, logout, get_session_data (предназначение, думаю, с названия понятно).
Во втором - get_session_data.
После успешного логина, регистрации переменной в сессии (Session->write), редиректимся на /Controller1/get_session_data, который нам выводит логин, под которым только что залогинились.
Если редиректить на /Controller2/get_session_data - логин не видит.
Содержимое get_session_data, что во в первом, что во втором контроллере одинаковое:
$this->set ( "user", $this->Session->read ( "user" ) );
и вид:
<?php if ( ! empty ( $user ) ) echo "User: " . $user; ?>
Как обращаться к переменным сессии из Controller2, которые были установленные Controller1? |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 15 Май 2009 09:13:12 Заголовок сообщения: |
|
|
Сессия доступна для всего приложения (для всех контроллеров).
Проверьте, может переменная не пишется, или сбрасывается? |
|
Вернуться к началу |
|
|
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 15 Май 2009 11:37:27 Заголовок сообщения: |
|
|
Я с Вами согласен - сессия доступна для всего приложения.
Для проверки во втором контроллере создал идентичный метод get_session_data (соответственно идентичный вид), он в нем переменная из сессии уже не видна.
А устанавливал вот так(как во многих банальных примерах):
class Controller1Controller extends AppController {
...
$this->Session->write ( "user", $someone['Moderator']['name'] );
$this->redirect ( "/Controller2/get_session_data" );
...
}
Какие можно проверить существует ли переменная (кроме $this->Session->check("user"))? не сбрасывается ли? не закрыта ли сессия? |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 15 Май 2009 12:16:47 Заголовок сообщения: |
|
|
Может в эту переменную "user" пишет/обнуляет кто-то ещё? Кроме твоей функции?
Как ещё? Да при помощи стандартных средств PHP. Как и раньше, в до-кейкпхпшные времена ))
А если у вас сайт на локале, на денвере - то можно просто файл сессии глянуть. |
|
Вернуться к началу |
|
|
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 15 Май 2009 14:16:35 Заголовок сообщения: |
|
|
У кого-то есть подобный рабочий код? поделитесь? |
|
Вернуться к началу |
|
|
bobadd
цитировать
Зарегистрирован: 06 Май 2009 20:56:43 Сообщения: 7
|
Добавлено: 15 Май 2009 15:44:41 Заголовок сообщения: |
|
|
Я вообще в AppController'e прописал
function isAuthorized(){
$user = $this->User->findById($this->Auth->user('id'));
$this->Session->write('User', $user["User"]);
return true;
}
В любом контроллере считываю
$User = $this->Session->read("User"); |
|
Вернуться к началу |
|
|
|