0

我的登录程序有问题。

即使我输入正确的凭据,它仍然会失败。

知道有什么问题吗?

jQuery

$loginForm.click(function (e) {
    if ($.trim($("#password").val()).length === 0) {
        alert('You must provide valid input');
        return false;
    }
    else {
        $('#login_header, #password, #sendlogin, #pass_title').hide()
        $.post("assets/login.php",{ password:$('#password').val() },function(data)
        {
            if(data=='yes')
            {
                alert("Login success.");
                // alert($('#password').val());
            }
            else
            {
                alert("Login failure.");
                // alert($('#password').val());
            }
        }
    )}
});

登录.php

<?php include("config.php"); ?>
<?php
$password=htmlspecialchars($_POST['password'],ENT_QUOTES);

$sql="SELECT id FROM login WHERE password='".$password."'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result); 

if(mysql_num_rows($result)>0)
{
    echo "yes";
    echo $password;
}
else
{
    echo "no"; 
}
?>

我现在收到以下错误消息:

在此处输入图像描述

4

2 回答 2

1

在你的 login.php 中输入错误,$pass 应该是 $password:

<?
$password=$_POST['password']; 

//now validating the username and password
$sql="SELECT * FROM login WHERE pass='".$password."'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result); 

//if password exists
if(mysql_num_rows($result)>0)
{
    echo "yes";
}
else
{
    echo "no"; 
}

编辑:添加了 PDO 示例:

如果你让它工作(认为问题在于字段/数据库的名称),使用 PDO 重写它会很好,因为正如其他人指出的那样,mysql_query 自 PHP 5.5 版起已弃用。

使用 PDO 它应该看起来像:

$dbHost = 'localhost';
$dbName = '';
$dbUser = '';
$dbPass = '';

$dbh = new PDO('mysql:host='.$dbHost.';dbname='.$dbName,$dbUser,$dbPass); 
$sth = $dbh->prepare('SELECT `id` FROM `login` WHERE `pass` = ? LIMIT 1');
$sth->execute(array($password));
if(!$results = $sth->fetchAll()) {
    // no results
}
var_dump($results);

(为了完整起见,我还添加了连接部分)。

于 2013-07-28T11:53:22.460 回答
-1

获取 num 行,然后获取它。

<?php include("config.php"); ?>
<?php
$password=htmlspecialchars($_POST['password'],ENT_QUOTES);

$sql="SELECT id FROM login WHERE password='".$password."'";
$result=mysql_query($sql);
// this line move to below.
//$row=mysql_fetch_array($result); 

if(mysql_num_rows($result)>0) {
    $row=mysql_fetch_array($result);
    echo "yes";
    echo $password;
}
else {
    echo "no"; 
}
?>
  • 不要使用 mysql_query 和朋友,因为这个函数将被 PHP 5.5 弃用链接
  • 所以尝试使用 PDO (链接
于 2013-07-28T12:27:30.760 回答