Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Доступ к одной переменной сессии из двух разных контроллеров

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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. Как и раньше, в до-кейкпхпшные времена Smile))

А если у вас сайт на локале, на денвере - то можно просто файл сессии глянуть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
uran26

цитировать



Зарегистрирован: 02 Апр 2009 12:13:49
Сообщения: 31
Откуда: Кировоград

СообщениеДобавлено: 15 Май 2009 14:16:35    Заголовок сообщения: Ответить с цитатой

У кого-то есть подобный рабочий код? поделитесь? Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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");
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru