繁体   English   中英

Ajax表单插件HTML响应始终返回错误消息,而mysql响应为true

[英]Ajax form plugin HTML response always returning error message with mysql response true

我正在使用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');
        }
    }
}); 
}); 

这是我当前搜索db的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";
    }

我发现了问题,在仔细检查后,在我的第一个PHP文件中包含了“ mysql_connect.php”文件,这引起了PHP响应上的额外内容。 我通过从“ mysql_connect”文件中删除此文件解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM