得到通知,如未定义的索引

时间:2013-06-28 22:19:52

标签: php mysql

$result = mysql_query("SELECT * FROM customers 
WHERE loginid='$_POST[login]' AND accpassword='$_POST[password]'");


    if(mysql_num_rows($result) == 1)
{
    while($recarr = mysql_fetch_array($result))
    {

    $_SESSION[customerid] =     $recarr[customerid];
    $_SESSION[ifsccode] =   $recarr[ifsccode];
    $_SESSION[customername] =   $recarr[firstname]. " ". $recarr[lastname];
    $_SESSION[loginid] =    $recarr[loginid];
    $_SESSION[accstatus] =  $recarr[accstatus];
    $_SESSION[accopendate] =    $recarr[accopendate];
    $_SESSION[lastlogin] =  $recarr[lastlogin];     
    }
    $_SESSION["loginid"] =$_POST["login"];
    header("Location: accountalerts.php");
}
else
{
    $logininfo = "Invalid Username or password entered";
}   

注意:未定义索引:登录和 注意:未定义的索引:密码 试着帮助我 在第二行获取错误消息

2 个答案:

答案 0 :(得分:0)

好像你没有通过查询中使用的POST参数:

>     $result = mysql_query("SELECT * FROM customers 
>     WHERE loginid='$_POST[login]' AND accpassword='$_POST[password]'");

您必须明确地将键值对发送到您的脚本。一个用于登录,一个用于密码。

答案 1 :(得分:0)

  1. 您需要将索引名称包装在引号中,并且您的查询字符串是hella messy。

    $query = sprintf(
                "SELECT * FROM customers WHERE loginid='%s' AND accpassword='%s'",
                $_POST['login'],
                $_POST['password']);
    $result = mysql_query($query);
    
  2. 整个事情应该包含在一个块中:

    if( isset($_POST['login']) && isset($_POST['password']) ) {
        //code here
    } else {
        echo "No username/password supplied.";
    }
    
  3. mysql_*函数正在消失,学会使用mySQLi或PDO。
  4. 您的查询对SQL注入的开放程度与任何可能的情况一样。使用mySQLi或PDO查看参数化查询,或至少在将数据包含在查询中之前验证数据。
  5. 这是一个PDO示例:

    //create DB object
    $dbh = new PDO('mysql:host=mysql.domain.com;dbname=mydb', $username, $password);
    //write query
    $query = "SELECT * FROM customers WHERE loginid = ? AND accpassword = ?";
    //define parameters to replace ?
    $params = array($_POST['login'], $_POST['password']);
    //prepare the statement
    $sth = $dbh->prepare($query);
    //execute
    if( ! $sth->execute($params) ) {
        //error reporting
        die('Query failed: ' var_export($dbh->errorInfo(), true));
    }
    //fetch all results as associative array
    $results = $dbh->fetchAll(PDO::FETCH_ASSOC)l
    //display
    var_dump($results);