0

ログイン フォームを処理するために、PHP と Jquery フォーム プラグインを使用してログイン スクリプトを作成しています。このプラグインを使用して、認証情報をチェックする PHP スクリプトへの値を処理します。PHP は「true」または「false」をエコーし​​、Jquery はエラー メッセージまたはダッシュボードへのリダイレクトを処理します。これが私のJqueryです:

<script> 
$(document).ready(function() { 
// bind 'myForm' and provide a simple callback function 
$('#loginform').ajaxForm(function(html) { 
    success:{
        if(html == 'true'){
            window.location = "dashboard.php";
        } else if (html == 'false') {
            $(".errormsg").show();
            $(".errormsg").css({
                background: "#fc4452", 
                border: "1px solid #ff0000", 
            });                        
            $('.errormsg').html('E-mail adres of wachtwoord onjuist');
        } else {
            $(".errormsg").show();
            $(".errormsg").css({
                background: "#fc4452", 
                border: "1px solid #ff0000", 
            });                        
            $(".errormsg").html('Er ging iets mis bij het inloggen');
        }
    }
}); 
}); 

データベースを検索する現在のphpスクリプトは次のとおりです。

include("../includes/mysql_connect.php");
$email = $_POST['email'];
$password = $_POST['password'];
$password = hash('sha256', $password);

 // Initialize a session:
$query_check_credentials = "SELECT * FROM Users WHERE (email='$email' AND    password='$password')";
$result_check_credentials = mysqli_query($dbc,      $query_check_credentials);
if(!$result_check_credentials){ //If the Query Fails
 echo 'Query Failed ';
 }

if(mysqli_num_rows($result_check_credentials) == 1) //if Query is successfull
 { // A match was made.
    session_start();
    $row = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);
    $_SESSION['email'] = $row['email'];
    echo "true";
  }else{
     echo"false";  
  }

ご覧のとおり、これは true または false をエコーし​​、ajax スクリプトの html 関数によって読み取られ、メッセージを表示するか、リダイレクトを実行します。

問題は、現時点ではそれを行っていないことです。「else」ステートメントで常にエラーメッセージを表示しています。正しい資格情報が入力されていても、「問題が発生しました」と表示されます。

jquery を使用せずに PHP をテストしたところ、資格情報に基づいて「true」または「false」が返されることがわかっています。それ以上、空白やその他のものはありません。

トラブルシューティングのために、以下の単純な PHP コードも作成しました。これは、上記の PHP と同じことを行いますが、データベースを使用していません。奇妙なことに、以下の PHP を使用すると、jQuery は正常に動作し、パスワードまたはユーザー名が間違っているとメッセージが表示され、対応するメッセージがパスワード「1」と「123」で表示されます。

これは mysql クエリのせいですか、それとも他に何か不足していますか? 前もって感謝します!

PHP テスト スクリプト

$email = $_POST['email'];
$password = $_POST['password'];
    if($email=="john@doe.com" && $password == "123"){ 
      session_start();
      $_SESSION['email'] = $email;
      echo "true";
    } else {
      echo "false";
    }
4

1 に答える 1

0

私は問題を発見しました.私の最初のPHPファイルには、詳細な検査の後、ファイル「mysql_connect.php」が含まれています.これにより、PHP応答に余分なコンテンツが発生していました. これを「mysql_connect」ファイルから削除して解決しました。

于 2015-07-09T00:27:29.007 に答える