Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Создание данных в сессии при создании экземпляра класса
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Создание данных в сессии при создании экземпляра класса

Страниц (1): [1]
 

1. NickSevenfold - 24 Февраля, 2012 - 13:07:14 - перейти к сообщению
Добрый день.
CODE (htmlphp):
скопировать код в буфер обмена
  1.         class User{
  2.  
  3.                 public function login($login, $password){
  4.                         $this->_login = $login;
  5.                         $this->_password = md5(_SALT_.$password);
  6.                         if($this->_validatePassword()){
  7.                                 $this->_login_in = true;
  8.                                 $this->_createSession();
  9.                                 return true;
  10.                         }else
  11.                                 return false;
  12.                 }
  13.                
  14.  
  15.                 private function _createSession(){
  16.                         $query = $this->db->query("SELECT * FROM users WHERE login='$this->_login'");
  17.                        
  18.                         $this->id = $query[0]['id'];
  19.                         $this->_groupID = $query[0]['groupId'];
  20.                        
  21.                         $_SESSION['id'] = $this->id;
  22.                         $_SESSION['login'] = $this->_login;
  23.                         $_SESSION['login_in'] = $this->_login_in;
  24.                         $_SESSION['groupID'] = $this->_groupID;
  25.                 }

Далее в одном из файлов создаю экземпляр класса и логинюсь:
CODE (htmlphp):
скопировать код в буфер обмена
  1.         $user = new Pacient();
  2.         $user->login('pacient','123');

var_dump($_SESSION) в этом файле:
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(4) { ["id"]=> string(1) "4" ["login"]=> string(7) "pacient" ["login_in"]=> bool(true) ["groupID"]=> string(1) "1" }

Но в других файлах, к которым я обращаюсь уже после того как залогинился, var_dump($_SESSION):
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(0) { }


Что именно я неправильно делаю? Создание переменных сессии не из тела класса? Подскажите направление куда копать.
2. Мелкий - 24 Февраля, 2012 - 13:43:40 - перейти к сообщению
Сессию стартовать не забываете?
3. Okula - 24 Февраля, 2012 - 13:55:56 - перейти к сообщению
А лучше в .htaccess прописать автоматический автозапуск сессий и забыть про session_start()
4. Мелкий - 24 Февраля, 2012 - 14:12:52 - перейти к сообщению
Okula, далеко не всегда лучше. Я неслучайно указал целый фрагмент кода, вместо session_start.
http://phpfaq[dot]ru/sessions

Если сессия используется только зарегистрированными пользователями - то зачем её стартовать всем? Зачем эта паразитная нагрузка от любого бота?
Плюс, кэшировать прям на nginx'е удобнее. Нет сессионной куки - можно из кэша всю страницу отдать.

 

Powered by ExBB FM 1.0 RC1