javascript - 使用ajax通过javascript提示验证密码

标签 javascript php mysql ajax prompt

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

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 {

}

?>

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

感谢您的帮助!

最佳答案

这个:

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

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

但是,AJAX 有点不同。服务器端代码仍然使用相同的 header 发送相同的响应类型,但浏览器不是发出请求的浏览器。 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 .

<小时/>

Edit: on the console I'm getting the error: ReferenceError: Can't find variable: $ $.post("check.php", {pass: pass, usr:usr});

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

关于javascript - 使用ajax通过javascript提示验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601245/

相关文章:

javascript - 额外的括号是什么

javascript - 最近/下一个 div 选择 jquery

php - 为什么我的日期选择器和时间选择器不显示?

php - 使用where子句选择单行时,表的大小是否会影响速度

php - 将时间:[Distance,速度]数据转换为距离:[Time,速度]数据

javascript - 如何在子参数方法中使用 this 关键字访问元素?

php - css 转换在循环时不起作用

php - Symfony 3 找不到 pdo_mysql 驱动程序

android - android/mysql的评分算法

mysql - 如何使 mysql group by 子句中缺失日期的计数为零