0

我正在制作一个使用 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

4

3 回答 3

2

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

if (isset($_GET['login']) && $_GET['login'] == "failed") {
于 2012-01-02T05:26:50.287 回答
2

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

这在第 7 行(如错误状态)处抛出$_GET['login']。抛出此错误是因为在数组login中找不到键。$_GET因此,PHP 抛出了通知。您可以添加isset()!empty()检查以避免错误,如下所示:

if (!empty($_GET['login']) && $_GET['login'] == "failed" )
于 2012-01-02T05:29:12.303 回答
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

于 2012-01-02T07:42:57.377 回答