【问题标题】:Use ajax to verify password with javascript prompt使用 ajax 通过 javascript 提示验证密码
【发布时间】:2014-07-06 23:20:30
【问题描述】:

在网页中,我试图实现一个按钮来提示用户输入密码以便注销。我想要做的是使用 javascript 提示来询问它,然后通过 AJAX 将其发送到一个 php 文件,该文件将验证密码是否正确,如果正确,它将返回索引。到目前为止,我尝试过的如下:

HTML:

<button style="" type="submit" class="" onclick='checkPass()'>              
        Logout
</button>

<script>
function checkPass()
{
    var usr = "<?php echo $usr = $_POST['usr']; ?>";
    var pass=prompt("Please write your password","");
    if (pass!=null && pass!="")
    {
        $.post("check.php", {pass: pass, usr:usr});
    }
}

</script>

检查.php:

<?php

$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name=""; // Database name 


// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$pass = mysql_escape_string($_POST['pass']);
$usr = mysql_escape_string($_POST['usr']);
$sql = mysql_query("SELECT * FROM USERS WHERE Usr='$usr' and Password='$pass'");

$count=mysql_num_rows($sql);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
    header("location:index.php");
}
else {

}

?>

这就是我所拥有的,但什么都没有发生(我没有得到任何回应)...... :(

感谢您的帮助!

【问题讨论】:

  • "按钮提示输入用户密码以便注销" --- 什么? o_O
  • 顺便说一句,存储纯文本密码是个坏习惯。
  • 从不以纯文本形式存储用户密码。 没有理由这样做。用户密码应在收到后立即进行哈希处理,并且永远无法检索。
  • 至于实际问题...定义“什么都没有发生”。是否发出了 AJAX 请求?它有你期望的参数吗?服务器是否收到该请求?服务器的响应是什么? “它不起作用”不是对问题的描述。您需要进行一些调试以确定至少具体在哪里进程失败。

标签: javascript php mysql ajax prompt


【解决方案1】:

这个:

if($count==1){
    header("location:index.php");
}

没有做你认为它正在做的事情。请记住,此请求是通过 AJAX 发出的,而不是作为主浏览器窗口。这种性质的重定向实际上并没有告诉浏览器做任何事情,它只是发送带有特定标头的特定响应类型。通常,这建议浏览器应该向另一个页面发起一个新请求(在本例中为index.php)。浏览器通常会接受此请求。

但是,AJAX 有点不同。服务器端代码仍在发送具有相同标头的相同响应类型,但浏览器不是发出请求的那个。 JavaScript 代码是。并且 JavaScript 代码不会自动遵循这个建议来重定向用户。你必须自己做。

AJAX 请求和响应通常应该只包含数据。因此,您可以将一些数据发送回客户端。您可以对一些值进行 JSON 编码,但在这种情况下,像这样简单的东西就可以解决问题:

if($count==1){
    echo "true";
}
else {
    echo "false";
}

然后在客户端回调中,检查该值并做出相应的响应:

$.post("check.php", {pass: pass, use:use}, function (response) {
    if (response == 'true') {
        // redirect the user
    } else {
        // authentication failed
    }
});

在 JavaScript 中执行重定向是 easy enough


编辑:在控制台上我收到错误:ReferenceError: Can't find variable: $ $.post("check.php", {pass: pass, usr:usr});

好吧,在这种情况下,听起来您还没有加载 jQuery 库。 You need to do that 以便使用 jQuery 代码。

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多