-2
$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";
}   

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

4

2 回答 2

0

好像您没有传递查询中使用的 POST 参数:

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

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

于 2013-06-28T22:23:25.063 回答
0
  1. 您需要将索引名称括在引号中,并且您的查询字符串非常混乱。

    $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 查看参数化查询,或者至少在将数据包含在查询中之前对其进行验证。

这是一个 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);
于 2013-06-28T22:26:18.827 回答