PHP和Javascript登录不';尽管用户名和密码正确,但无法工作

PHP和Javascript登录不';尽管用户名和密码正确,但无法工作,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在尝试在.js和.php文件之间发送数据以进行登录。我已经设法使用ajax将数据从js发送到php,但是在.php文件中进行登录检查时遇到了一些困难,无论用户名和密码是否正确,firebug中的循环总是返回“失败” 我已经尝试匹配用户名和密码,但它似乎无法按我希望的方式工作。我在这方面是新手,所以我可能犯了一个错误,但不知道是什么错了。我已经检查了许多类似的问题,但是没有一个能帮上忙。如果我能得到一些帮助,我将不胜感激!代码如下: .js $(document).ready(function

我正在尝试在.js和.php文件之间发送数据以进行登录。我已经设法使用ajax将数据从js发送到php,但是在.php文件中进行登录检查时遇到了一些困难,无论用户名和密码是否正确,firebug中的循环总是返回“失败”

我已经尝试匹配用户名和密码,但它似乎无法按我希望的方式工作。我在这方面是新手,所以我可能犯了一个错误,但不知道是什么错了。我已经检查了许多类似的问题,但是没有一个能帮上忙。如果我能得到一些帮助,我将不胜感激!代码如下:

.js

$(document).ready(function() {

    $("#login").click(function() {

        var email = $("#email").val();
        var password = $("#password").val();

        //checking for blank fields
        if (email == '' || password == '') {
            $('input[type="text"],input[type="password"]').css("border", "2px solid red");
            $('input[type="text"],input[type="password"]').css("box-shadow", "0 0 3px red");
            alert("Please fill up all the fields");
        } 
        else 
        {
            $.ajax({
                    type: "POST",
                    url: "http://localhost/Reward/applogin.php",
                    data: {log_email: JSON.stringify(email), log_pwd: JSON.stringify(password)},
                    dataType: 'JSONP',
                    crossDomain: true,
                    cache: false,

                    success: function(data) 
                    {
                        if (data == 'Invalid Email') 
                        {
                            $('input[type="text"]').css({
                                "border": "2px solid red",
                                "box-shadow": "0 0 3px red"
                            });
                            $('input[type="password"]').css({
                                "border": "2px solid #00F5FF",
                                "box-shadow": "0 0 5px #00F5FF"
                            });
                            alert(data);
                        } 
                        else if (data == "Email or Password is incorrect") 
                        {
                            $('input[type="text"],input[type="password"]').css({
                                "border": "2px solid red",
                                "box-shadow": "0 0 3px red"
                            });
                            alert(data);
                        } 
                        else if (data == "Successfully Logged in") 
                        {
                            alert("Success");
                            $("form")[0].reset();
                            $('input[type="text"],input[type="password"]').css({
                                "border": "2px solid #00F5FF",
                                "box-shadow": "0 0 5px #00F5FF"
                            });

                            alert(data);
                        } 
                        else 
                        {
                            alert(data);
                        }

                    }
            })
        }
    });
});
.php

    <?php
header('Content-Type: application/json');

require 'dbcon.php';

if((isset($_POST["log_email"])) && (isset($_POST["log_pwd"]))) 
{
    require 'dbcon.php';
    $log_email = json_decode($_POST["log_email"]);
    $log_pwd = json_decode($_POST["log_pwd"]);

    $result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
    $result->bind_param('s', $log_email);
    $result->execute();
    $result->bind_result($acc_email, $acc_pwd);

    if($result->fetch())
      {
        if ($acc_email == $log_email && $acc_pwd == $log_pwd) 
        {
          $data="Successfully Logged in";
          echo json_encode ($data);
        }
        else
        {
          $data="Email or Password is incorrect";
          echo json_encode($data);
        }
      }
    else
      {
        echo json_encode ("Failed");
      }  
    //connection closed
    mysqli_close ($con);
}

else
{
    echo json_encode ("Super Failed");
}
?>

编辑:我已经尝试使用test.php文件来查看它是否会产生任何影响。似乎“if”循环被忽略了,它直接跳转到“else”部分,并在firebug中作为响应回显“u lose”。如果删除else部分,则根本没有响应

下面是我使用的test.php文件:

<?php

if(isset($_POST['log_email']))
{
        echo json_encode("blablabla");
}
else 
{
  echo json_encode("u lose");
}

?>

我认为错误在这里:

$result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
$result->bind_param('ss', $log_email, $log_pwd);
以这种方式更改第二行:

$result->bind_param('s', $log_email);
您只需要比较电子邮件,而不需要比较密码和电子邮件

现在,这个片段也是不必要的:

$acc_email = $acc_email;
$acc_pwd = $acc_pwd;
因此,您的函数应该如下所示:

<?php

require 'dbcon.php';

if(isset($_POST["log_email"]) && isset($_POST["log_pwd"])) 
{
    require 'dbcon.php';
    $log_email = mysqli_real_escape_string($con, $_POST["log_email"]);
    $log_pwd = mysqli_real_escape_string($con, $_POST["log_pwd"]);

    $result = $con->prepare("SELECT `acc_email`, `acc_pwd` FROM `account` WHERE `acc_email` = ?");
    $result->bind_param('s', $log_email);
    $result->execute();
    $result->bind_result($acc_email, $acc_pwd);

    if($result->fetch())
      {
        if ($acc_email == $log_email && $acc_pwd == $log_pwd) 
        {
           echo json_encode ("Successfully Logged in");
        }else{
            echo json_encode("Email or Password is incorrect");
        }
      }
    else
      {
        echo json_encode ("Failed");
      }  
    //connection closed
    mysqli_close ($con);
}else{
    echo json_encode ("Failed");
}
?>


更新:我发现问题在于我用来发送Ajax请求的数据类型。我参考了此链接以获取帮助,它现在正在工作。

您只有一个占位符。您正在尝试绑定2个值。绑定时不需要逃避。如果您还没有设置密码,则应将其散列。你也不需要
$acc\u email==$log\u email
你知道如果你得到一个返回,它是匹配的。每次你存储一个未修改的密码,root就会将一只小猫移动到/dev/null!使用
password\u hash()
password\u verify()
感谢您的回复!我尝试了这个方法,但是循环仍然只返回最后一个echo“echo json_encode(“Failed”);”在这篇文章中,我把“Failed”改成了别的词来确保。