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());
            }
        }
    )}
});

login.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"; 
}
?>
于 2013-07-28T12:27:30.760 に答える