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 :: Идентивикатор сессии и ошибка "Notice: Undefined index: login in"

 PHP.SU

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


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

> Описание: Наилучшее решение в данном случае
Ishan
Отправлено: 21 Ноября, 2014 - 10:26:18
Post Id



Новичок


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


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




Здравствуйте! Я делаю сайт на php, в-первую очередь, чтобы на практике освоить програмирование на php. Сделать успел уже ни мало когда пришла мысль проверить на наличие ошибок. Для этого вставил в код главной страницы, где происходит авторизация, вот такую строку:

И сразу же увидел целый список ошибок. Почти все сразу же исправил, но одну решить не могу.

Цитата:
Notice: Undefined index: login in Z:\home\test2.ru\www\system\inc\system.php on line 35


Строка 35 файла,system.php в которой возникла ошибка:
PHP:
скопировать код в буфер обмена
  1. $req = mysql_query("SELECT * FROM `users` WHERE `login` = '".$_SESSION['login']."'");


Понятно, что иддентификатор сессии не определен, так как пользователь не авторизован. В теме Решение ошибок в php в качестве решения подобных ошибок предлагаеться проверить в массиве наличие индекса. Как я понимаю, мне нужно указать индентификатор сессии.

Вопрос в том, как это сделать, если пользователь еще не авторизован. Ведь индекс "login" записываеться в сессию при авторизации.

P.S.: Простите за ошибку в названии темы. Поздно заметил.

(Отредактировано автором: 21 Ноября, 2014 - 10:55:42)

 
 Top
kotyara1979
Отправлено: 21 Ноября, 2014 - 10:45:12
Post Id


Частый гость


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


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




Вверху раздела "Вопросы новичков" есть прикрепленная тема об ошибках.

Цитата:
2) Notice: Undefined index: [index] in [filename] on line [line]
3) Notice: Undefined offset: [number] in [filename] on line [line]
Обе ошибки похожи, и возникают они при обращении к не существующему индексу массива ([index] или [number]) в строке [line] файла [filename], только в первом случае это строковый индекс ($arr['index']), а во втором - числовой ($arr[2]).
Решение: проверить в массиве наличие индекса [index] или [number].


В вашем случае это означает, что в массиве $_SESSION нет индекса 'login'.

Может быть вы ошиблись и должен быть массив _POST или _GET?
(Добавление)
Вторая ошибка - это следствие первой. У вас вывод информации из за ошибки начинается раньше, чем идет формирование заголовков.

(Отредактировано автором: 21 Ноября, 2014 - 10:47:42)



-----
Сделать можно все. Главное одеть каску.
 
 Top
Ishan
Отправлено: 21 Ноября, 2014 - 11:40:04
Post Id



Новичок


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


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




kotyara1979 пишет:

В вашем случае это означает, что в массиве $_SESSION нет индекса 'login'.

Может быть вы ошиблись и должен быть массив _POST или _GET?
(Добавление)
Вторая ошибка - это следствие первой. У вас вывод информации из за ошибки начинается раньше, чем идет формирование заголовков.


Насчет массива я не ошибся. Ну а то что нет индекса 'login' я знаю. В том то и проблема! Какой индекс должнн бать указан, если пользователь еще не авторизовался?

Чтобы ошибка не мешала поставил знак "@" перед запросом:

PHP:
скопировать код в буфер обмена
  1. $req = @mysql_query("SELECT * FROM `users` WHERE `login` = '".$_SESSION['login']."'");


Но это не решение проблемы.
 
 Top
Sail
Отправлено: 21 Ноября, 2014 - 12:12:08
Post Id



Участник


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


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




Ishan пишет:
Какой индекс должнн бать указан, если пользователь еще не авторизовался?

Простая проверка:
PHP:
скопировать код в буфер обмена
  1. if(!empty($_SESSION['login'])){
  2.  // проверка
  3. } else {
  4.  // запрос авторизации
  5. }

(Отредактировано автором: 21 Ноября, 2014 - 12:13:17)

 
 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