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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание данных в сессии при создании экземпляра класса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
NickSevenfold
Отправлено: 24 Февраля, 2012 - 13:07:14
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Добрый день.
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):


Что именно я неправильно делаю? Создание переменных сессии не из тела класса? Подскажите направление куда копать.
 
 Top
Мелкий Супермодератор
Отправлено: 24 Февраля, 2012 - 13:43:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сессию стартовать не забываете?


-----
PostgreSQL DBA
 
 Top
Okula
Отправлено: 24 Февраля, 2012 - 13:55:56
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




А лучше в .htaccess прописать автоматический автозапуск сессий и забыть про session_start()
 
 Top
Мелкий Супермодератор
Отправлено: 24 Февраля, 2012 - 14:12:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Okula, далеко не всегда лучше. Я неслучайно указал целый фрагмент кода, вместо session_start.
http://phpfaq[dot]ru/sessions

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


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB