Здравствуйте. Сделал авторизацию на сайте, после того как пользователь залогинился, хотелось бы, что бы в форме выводилось то то типа - "Добро пожаловать %username%". После успешной автоизации идет следующий код: Код (Text): $_SESSION["UserInfo"] = array('login'=>$row->name,'email'=>$row->mail); setcookie("user",$mdname."_".$mdpw,time()+60*60*24*10,"/"); Как мне получить из переменой $_SESSION имя пользователя? Зараннее спасибо за ответы.
Бр... name тут причем (Вам пример показали), у вас там login и email - $_SESSION["UserInfo"]['login']
echo('USERNAME='.$_SESSION["UserInfo"]['login']); Notice: Undefined variable: _SESSION in то же самое( Добавлено спустя 30 минут 28 секунд: В php.ini директива register_globals была off сделал on ничего не изменилось, только вылез нотис при запуске xammp Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0 Я так понимаю, что что эта директива была выпиленна из php 5.3( Есть ли альтернативный вариант решения этой проблемы?
Вернул назад, вставил после авторизации session_start(); получилось так: Код (Text): $mdname = md5($login); $mdpw = md5($pass); $_SESSION["UserInfo"] = array('login'=>$row->name,'email'=>$row->mail); setcookie("user",$mdname."_".$mdpw,time()+60*60*24*10,"/"); session_start(); та же картина... Может я туплю, но я только начал изучать пхп , поэтому просьба: обьясняйте как полному новичку) Что, куда, перед чем... Зараннее благодарен.
Вставил в самый верх index.php результат такой же( Или все таки эту конструкцию надо вставить в начало файла login.php? где собсвенно и происходит авторизация...
Все правильно, index.php инклудит login.php, но почему-то, когда я вставил session_start(); в начало index.php ничего не изменилось. все та же ошибка он еобьявленной переменной(
Можно попробовать сделать так var_dump(session_start()); Если вернет FALSE значит как-то блокируется создание сессии, если TRUE значит все ОК А если вставить session_start(); в скрипт login.php то же возвращается ошибка?
на var_dump( $_SESSION ); и var_dump(session_start()); выдает array(0) { } Notice: A session had already been started - ignoring session_start() in /opt/lampp/htdocs/test/index.php on line 114 bool(true) Notice: Undefined index: UserInfo in /opt/lampp/htdocs/test/index.php on line 119 если же убираю session_start из самого начала index.php то : Notice: Undefined variable: _SESSION in /opt/lampp/htdocs/test/index.php on line 113 NULL bool(true) Notice: Undefined index: UserInfo in /opt/lampp/htdocs/test/index.php on line 119
Этого не может быть =) там ничего такого не живет. Сессия это такой текстовый файлик на стороне сервера. Добавлено спустя 6 минут 36 секунд: ну дык вроде все пашет. сессия создается. она пустая. второй раз уже быть объявлена не может, так что все пашет. а если у тебя сессия пустая, то может это потому что туда ничего не записано? =)
Ну после авторизации ж туда чето пишется... может просто я не там делаю session_start ? после чего нужно это делать? Сразу после авторизации или где? Тем более что я ж туда пишу: Код (Text): $_SESSION["UserInfo"] = array('login'=>$row->name,'email'=>$row->mail); setcookie("user",$mdname."_".$mdpw,time()+60*60*24*10,"/"); правда только когда логинится пользователь... Но я пробывал и логинится - вес бестолку(
что то я не пойму механизма работы, читал вроде все понятно, а на деле во как) Если, например, сделать старт сесии в самом начале, то она будет пустая , т.к. я в нее еще ничего не писал...Но с другой стороны, после логина, даже если закрыть браузер, перелогиневатся не нада, все хватает и так...
Писать в сессию до того, как ты её стартуешь - вообще бессмысленно. Ничего не запишется. Сперва стартуешь сессию, потом уже пишешь туда или читаешь оттуда или обновляешь и т.п. Только после того, как стартовал её.
Я так понял с сессией у меня все нормально, вот только не пойму, почему пхп не видит $_SESSION и ругается на нее Undefined variable: _SESSION Думаю что проблема именно в этом.
всем спасибо, поулчилось! только когда я строку Код (Text): $_SESSION["UserInfo"] = array('login'=>$row->name,'email'=>$row->mail); заменил на Код (Text): $tmp=$row->name; $_SESSION["UserInfo"] = array('login'=>$tmp,'email'=>$row->mail); Незнаю почему так, но работает!