为什么我会收到未定义的索引错误?

时间:2012-01-02 05:23:56

标签: php database login undefined-index

我正在创建一个使用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 个答案:

答案 0 :(得分:2)

当您尝试访问数组中不存在的元素时,会发生此通知。要检查是否 - 请使用isset()

if (isset($_GET['login']) && $_GET['login'] == "failed") {

答案 1 :(得分:2)

迪伦,我强烈建议你RTM。如果您不了解未定义的索引错误,那么开始编写代码可能不是一个好主意。

这是在$_GET['login']的第7行(如错误状态)引发的。抛出此错误是因为login不是$_GET数组中的密钥。因此,PHP引发了通知。您可以添加isset()!empty()检查以避免错误,例如:

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

答案 2 :(得分:0)

假设您在http://localhost/yoursite

运行代码

如果你给浏览器这样的地址。不会发生错误。因为您已将$ _GET ['login']分配给“失败”值。

  

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

但如果你没有在地址

中提供“login = failed”
  

http://localhost/yoursite/index.php

$ _ GET ['login']未设置,并且php无法在$ _GET数组中找到'login'索引,它会抛出错误:)

解决方案是检查$ _GET ['login']是否设置,然后再检查其值。

if ( !empty($_GET['login']) && $_GET['login'] == "failed" )
如果未设置empty($_GET['login']),则

$_GET['login']会返回true