簡體   English   中英

ajax登錄表單不起作用

[英]ajax login form doesn't work

我正在嘗試將用戶的信息從mysql傳遞到網頁,如果該用戶已經登錄但無法正常工作。 如果我輸入了錯誤的電子郵件或密碼,它將顯示錯誤消息,但是如果憑據正確,它將執行任何操作...

在php文件上:

$sql = "SELECT * FROM users WHERE email='$l_email' AND password='$l_password'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
if($num_rows < 1)
{
    echo "You have entered a wrong email or password!";
}
else {
$memberInfo = array();
while( $row = mysql_fetch_array( $query ) )
{
    $memberInfo[] = $row;
}
return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";
}

在js文件上:

 $.post("./includes/checkOut.php",{ l_email1: l_email, l_password1: l_password },
          function(data) {
           if(data=='1')
            $("#checkOut_form")[0].reset();
            $("#login_returnmessage").html("");
            $("#memberInfo").hide("");
            var memberInfo = jQuery.parseJSON(memberInfo);
            for( var i in memberInfo )
            {
            var f_name = memberInfo[i].f_name;
            var l_name = memberInfo[i].l_name;
            var phone = memberInfo[i].phone;
            }
            $("#loggedinInfo").show("");
            $('#_f_name').val(f_name);
            $('#_l_name').val(l_name);
            $('#_email').val(l_email);
            $('#_phone').val(phone);
         }
           $("#login_returnmessage").html(data);        
        });

如果在函數外部使用return則它將在此時終止腳本。 這正是您在這里所做的:

return $memberInfo;
echo json_encode( $memberInfo );
//echo "1";

您需要刪除return語句。

您還應該在響應中添加Content-type:標頭,以告訴瀏覽器使用JSON:

header('Content-type:application/json');
echo json_encode( $memberInfo );

您的Javascript代碼正在檢查未發送的值1的響應,因此將不會執行更新顯示的代碼。

最后:

  • 不要存儲未加密的密碼-使用password_hash()
  • 不使用mysql ,因為它是過時-使用mysqliPDO
  • 確保在將輸入傳遞到數據庫之前對輸入進行轉義(或者更好的方法是使用准備好的語句( mysql_*()不支持mysql_*() )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM