Php 检查密码是否正确jquery

Php 检查密码是否正确jquery,php,jquery,forms,login,passwords,Php,Jquery,Forms,Login,Passwords,我对登录表单有问题。当我尝试登录时,javascript总是返回假值,即使我输入了正确的用户名和密码 以下是我在jQuery文件中的代码: $(document).ready(function(){ var teamname = $("#teamname"); var teampassword = $("#teampassword"); function isPasswordCorrect() { var password = teampassword.val(); var

我对登录表单有问题。当我尝试登录时,javascript总是返回假值,即使我输入了正确的用户名和密码

以下是我在jQuery文件中的代码:

$(document).ready(function(){

var teamname = $("#teamname");
var teampassword = $("#teampassword");

function isPasswordCorrect()
{
    var password = teampassword.val();
    var name = teamname.val();
    var result = false;

    $.post('../php/validations/validatePassword.php', {tname: name, tpassword: password}, function(data){
        if(data == 1){
            result = true;
        }else{
            result = false;
        }
    });
    return result;
}

$("#join").click(function(){
    if(isPasswordCorrect()){
        alert("You have joined");
    }else{
        alert("You have not joined");
    }
});
});
这是我在PHPfile中的代码:

<?php   
$teamname = $_POST['tname'];
$teampassword = $_POST['tpassword'];

if($teamname != "" || $teampassword !=""){
    include('../connection.php'); // Here is the log in to the phpmyadmin

    $queryCheckPassword = mysqli_query($con, "SELECT password FROM 
    teams WHERE    name = '$teamname'");

    $row = mysqli_fetch_row($queryCheckPassword);
    $teamPassword = $row[0];
    if($teamPassword == $teampassword)
    {
        echo 1;
    }else{
        echo 0;
    }
}
?>

问题在于Javascript的使用。看看你的
isPasswordCorrect
函数(我稍微重新格式化了一下,使问题更清楚一些):

看到那里的
函数(数据){}
了吗?这是回拨。
$.post
方法的工作方式如下:

  • JS代码使用
    $向服务器发送请求。post

  • 您的JS代码将继续,继续下一步的工作

  • 一段时间后(可能是10毫秒后,也可能是30秒后),服务器响应请求此时您的回调被调用

  • 这是什么意思?当您的代码点击
    返回结果时行,您的代码刚刚向服务器提交了请求,服务器可能还没有响应。因此,
    result
    仍然是
    false

    此问题的快速解决方案是将
    警报
    语句移动到回调中,如下所示:

    function isPasswordCorrect()
    {
        var password = teampassword.val();
        var name = teamname.val();
    
        $.post(
            '../php/validations/validatePassword.php',
            {tname: name, tpassword: password},
            function (data) {
                if(data == 1){
                    alert("You have joined");
                }else{
                    alert("You have not joined");
                }
            }
        );
    }
    
    $("#join").click(function(){ isPasswordCorrect(); });
    

    然而,我想你会想做的不仅仅是
    alert
    什么。您需要研究Javascript的异步性质并理解它,然后才能扩展此片段以完成更多工作。

    因为AJAX不会立即返回结果-异步-您只想在AJAX回调中检查,并且只有在得到结果时才这样做:

    function isPasswordCorrect()
    {
        var password = teampassword.val();
        var name = teamname.val();
        $.post(
            '../php/validations/validatePassword.php', 
            { tname: name, tpassword: password }, 
            function(data) {
                if(data == 1) {
                    alert("You have joined");
                } else {
                    alert("You have not joined");
                } 
            }
        );
    }
    
    $("#join").click(isPasswordCorrect);
    

    PeterKA关于异步的看法是正确的。默认值(false)可能在异步调用返回之前返回。请尝试添加回调(未测试):


    AJAX是异步的,
    结果
    变量操作并没有那么精确。请在AJAX回调中进行检查。我希望这些代码不会出现在互联网上。如果是这样,您应该添加一些代码来防止SQL注入。您确实应该使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
    密码\u hash()
    。下面是一个学习语句的示例。感谢您与我分享这些有用的信息。我要检查一下。当然,我不会在没有SQL注入保护的情况下将这些代码放到Internet上。再次感谢你!
    function isPasswordCorrect()
    {
        var password = teampassword.val();
        var name = teamname.val();
    
        $.post(
            '../php/validations/validatePassword.php',
            {tname: name, tpassword: password},
            function (data) {
                if(data == 1){
                    alert("You have joined");
                }else{
                    alert("You have not joined");
                }
            }
        );
    }
    
    $("#join").click(function(){ isPasswordCorrect(); });
    
    function isPasswordCorrect()
    {
        var password = teampassword.val();
        var name = teamname.val();
        $.post(
            '../php/validations/validatePassword.php', 
            { tname: name, tpassword: password }, 
            function(data) {
                if(data == 1) {
                    alert("You have joined");
                } else {
                    alert("You have not joined");
                } 
            }
        );
    }
    
    $("#join").click(isPasswordCorrect);
    
    function isPasswordCorrect(callback)
    {
        var password = teampassword.val();
        var name = teamname.val();
    
        $.post('../php/validations/validatePassword.php', {tname: name, tpassword: password}, 
              function(data) { callback(data == 1); });
    }
    
    $("#join").click(function(){
        isPasswordCorrect(function(result) {
            if (result)
               alert("You have joined");
            else
               alert("You have not joined");
        });
    });