PHP / MYSQL未定义变量错误

时间:2014-05-05 23:46:03

标签: php mysql

我正在尝试为我的网站创建一个rememberme登录系统,但是我遇到了一个关于未定义索引的错误。

从测试到目前为止,我已经经历了以下结果。

当我在表单中输入任何内容,即保留密码和用户名空白时,我会收到正确的错误“请输入用户名和密码”。 - 这是唯一可行的!

当我输入错误的用户名和密码时,我会被重定向到该文件 的login.php

最后,当我输入正确的用户名和密码时,我收到错误消息

  

“注意:未定义的索引:第17行的E:\ wamp \ www \ myphpsite \ login.php中的密码”

与“不正确的用户名/密码组合。”。

一起使用
 <?php

  include 'functions.php';

  if (isset($_POST['login'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

if (isset($_POST['rememberme']))
    $rememberme = $_POST['rememberme'];

if ($username && $password){

    $login = mysql_query("SELECT * FROM php_customer WHERE username='$username'");
    while ($row = mysql_fetch_assoc($login)){
            $db_password = $row['password'];

        if ($password == $db_password)
            $loginok = TRUE;
            else
            $loginok = FALSE; 

        if ($loginok == TRUE){

            if($rememberme == "on")
                setcookie("username", $username, time()+7200);
            else if ($rememberme == "")
                $_SESSION['username'] = $username;

            header("Location: userarea.php");
            exit();


        }else{
            die("Incorrect username/password combination.");
        }   
    }

}
else
    die("Please enter a username and password.");

 }

 ?>

以上是我在loginpage.php文件中包含的login.php文件的代码。

我已经尝试过使用isset()函数,但这似乎不起作用。

HTML:

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
        <tr>
        <form method="POST" action="login.php">
        <td>
        <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
        <tr>
        <td colspan="3"><strong>Member Login </strong></td>
        </tr>
        <tr>
        <td width="78">Username</td>
        <td width="6">:</td>
        <td width="294"><input name="username" type="text" id="username"></td>
        </tr>
        <tr>
        <td>Password</td>
        <td>:</td>
        <td><input name="password" type="text" id="password"></td>
        </tr>
        <tr>
        <td><input name="rememberme" type="checkbox" id="rememberme"></td>
        <td></td>
        <td>Remember me </td>
        </tr>
        <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td><input type="submit" name="login" value="Log in"></td>
        </tr>
        </table>
        </td>
        </form>
        </tr>
</table>

3 个答案:

答案 0 :(得分:1)

要回答您的初始问题,您的数据库似乎没有名为password的列。这是根据代码在第17行失败的事实确定的。

此外,您的脚本存在多个安全漏洞。

  • 传递给此脚本的用户名或密码不会发生字符串转义
  • 密码以纯文本格式存储
  • mysql驱动程序已被弃用,应替换为mysqli或pdo

答案 1 :(得分:1)

好的,我觉得很傻。问题是密码字段是用大写字母P写的 所以密码而非密码

现在一切正常

答案 2 :(得分:0)

我认为你应该检查你的mysql表是否有“密码”字段......