0

ログインページがあります。正しいログインデータを入力すると、ajaxが機能します。しかし、不正なログインまたはパスワード スクリプトを入力すると、エラーが返されません。コードを間違えた場合、これを修正するにはどうすればよいですか? Ajax スクリプト

function getdetails()
{
    var name = $('#user').val();
    var haslo = $('#pass').val();
    var request=$.ajax
    ({
        type: "POST",
        url: "login.php?id=0",
        data: {login:name, pass:haslo}
    });
    request.fail(function() { 
    alert("test");
    });
    request.done(function() {
    $('#logowanie').load('index.php #logowanie');
    });

};

フォームコード

function logowanie()
{
    if(isset($_SESSION["login"]) && $_SESSION["login"]!==0)
    {
        echo '<div id="logowanie"> Witaj '.$_SESSION['nick'].' na forum';
        echo '<br/><a href="login.php?off=1">Wyloguj</a><br/>';
        if($_SESSION['power']>0)
            {echo '<a href="panel.php">Panel Admina</a>';}      
        echo '</div>';
    }
    else
    {
        $_SESSION["login"]=0;
        $_SESSION['power']=0;
        ?>
        <div id="logowanie">
        <font color="red"><B> Login</B></font><input type="text" name="user" size="8" id="user"><br/>
        <B><font color="red">Hasło</font></B><input type="password" name="pass" size="8" id="pass"><br/>
        <input type="submit" value="Zaloguj" name="przycisk" onClick ="getdetails()">Jeżeli nie posiadasz jeszcze konta <a href="login.php?id=1">zarejestruj się </a></div>'<?php
    }
}

フォームチェック

function werfikuj(){
$login=$_POST['login'];
$haslo=$_POST['pass'];
$zapytanie= 'Select * from users where login="'.$login.'" and haslo="'.md5($haslo).'"';
$result = $this->db->query($zapytanie);
if($result->num_rows==1) {  echo "Zalogowano poprawnie";$row = $result->fetch_assoc(); $_SESSION['login']=$row['id']; $_SESSION['nick']=$row['login']; $_SESSION['power']=$row['power'];}
else { die(json_encode('zly login lub haslo'));}


}

助けてくれてありがとう。

4

1 に答える 1

-1

Ajaxは、あなたがエラーを表示したいことを知りません.ajax呼び出しに対して、あなたの「Zalogowano poprawnie」メッセージとエンコードされた「zly login lub haslo」メッセージは、私にとっては意味がありません(私はあなたの言語を知りません)。エラーであることを ajax に伝えたい場合は、別の http 応答コードで応答する必要があります。「失敗」メソッドは、HTTP エラー応答がある場合にのみ呼び出されます。

PHP5を使用している場合、

echo json_encode('zly login lub haslo');
http_response_code(404);
exit();

ところで、json_encode を使用する意図がわかりません。これは最終的に問題を解決しない可能性があります。しかし、「エラー」が発生しない理由には答えていると思います

または、いつでも「ok」または「failed」メッセージだけを返すこともできます。Ajax は常に「done」メソッドを呼び出します。「done」メソッド内で、メッセージ (「ok」または「failed」) に従って異なるアクションをトリガーします。

于 2013-06-22T14:35:47.513 に答える