Почему я получаю неопределенную ошибку индекса? - PullRequest
0 голосов
/ 02 января 2012

Я делаю простую форму входа, которая сохраняет в базе данных, используя MYSQL.Я использовал учебное пособие, и в конце, когда я тестировал его, я получил ошибку, говорящую

'Notice: Undefined index: login in C:\wamp\www\database_test\login.php on line 7'

Не знаю, что это значит, и после поиска в Интернете все еще не могу понять это.Вот мой кодПожалуйста помоги.Спасибо!

 <?php

     session_name('MyLogin');
     session_start();
     session_destroy();

     if ($_GET['login'] == "failed") {    //<------This is line 7//
         print $_GET['cause'];
     }

 ?>
 <html>
     <body>
         <form name='login_form' method='post' action='log.php?action=login'>
             Login: <input type='text' name='user'><br />
             Password: <input type='password' name='pwd'><br />
             <input type='submit'>
         </form>
     </body>
 </html>

Я скопировал это из учебника на

http://www.howtodothings.com/computers-internet/how-to-make-a-login-system-for-your-website

Ответы [ 3 ]

2 голосов
/ 02 января 2012

Дилан, я настоятельно рекомендую тебе RTM.Если вы не понимаете неопределенную ошибку индекса, возможно, начинать написание кода пока не стоит.

Выдается в строке 7 (как состояния ошибки) в $_GET['login'].Эта ошибка возникла из-за того, что login не найден ключ в массиве $_GET.Поэтому PHP бросает уведомление.Вы можете добавить проверку isset() или !empty(), чтобы избежать ошибки, например:

if (!empty($_GET['login']) && $_GET['login'] == "failed" )
2 голосов
/ 02 января 2012

Это уведомление появляется, когда вы пытаетесь получить доступ к элементу, который не существует в массиве.Чтобы проверить, если это так - используйте isset()

if (isset($_GET['login']) && $_GET['login'] == "failed") {
0 голосов
/ 02 января 2012

Предположим, вы запускаете свой код на http://localhost/yoursite

Если вы даете браузеру адрес, подобный этому.Ошибка не возникнет.Поскольку вы присвоили $ _GET ['login'], значение "fail".

http://localhsot/yoursite/index.php?login=failed

Но если вы не предоставите "login =сбой "в адресе

http://localhost/yoursite/index.php

$ _ GET ['login'] не установлен, и php не может найти индекс 'login' в массиве $ _GET,выдает ошибку:)

Решением этой проблемы является проверка, установлен ли $ _GET ['login'] перед проверкой его значения.

if ( !empty($_GET['login']) && $_GET['login'] == "failed" )

empty($_GET['login']) возвращает true, если $_GET['login'] НЕ установлено

...