我想要做的是有一个检查登录信息的表单,然后,如果信息不正确,它会将我重定向回登录表单所在的页面,但是显示的ap元素表示“用户名/密码错误“。
我有什么方法可以做到这一点?或者有什么办法可以只使用jQuery / ajax进行登录检查? 过去几个小时我一直试图解决这个问题,但我无法做到这一点。请记住,我是网络编程领域的新手,所以如果我的问题有明显的答案,请不要太苛刻。
答案 0 :(得分:1)
凭据应存储在您的服务器上。
使用ajax,在表单提交上:
答案 1 :(得分:0)
从您的服务器返回401 Unauthorized响应代码(请参阅此处:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error)
您可以使用PHP标头指令返回代码:http://php.net/manual/en/function.header.php
在您的javascript函数中,添加错误回调并根据需要更新DOM。
答案 2 :(得分:0)
是的,您可以使用ajax登录到登录表单。我假设你已经有了一些表单元素,只需要发布到登录页面。您可以创建一个这样的帖子请求:
xhttp=new XMLHttpRequest(); //make a request
xhttp.onreadystatechange=function() { //The request is asynchronous, this function will be executed once it completes
if (xhttp.readyState==4 && xhttp.status==200) {
if (xhttp.responseText==0) { //or whatever else your "error" is
document.getElementById("errorDisplayDiv").innerHTML = "Login failed!"; //show a login error text
}
else if (xhttp.responseText==1) { //login page reported a success
document.location = "usercontent.php"; //redirect to a page for logged in users
}
}
}
xhttp.open("POST","login.php",true); //post to your login page
xhttp.send(); //send it
所以这里有一些你需要的东西:
这只是一个快速回答,如果您需要任何相关详细信息,请发表评论。
答案 3 :(得分:0)
除了dm03514所说的,不要试图在客户端授权用户 - 任何人都可以查看源并找出凭据。这是一个使用jQuery的非常简单的AJAX实现: http://jsfiddle.net/UTCbM/
'url'(check_username.php)应该包含处理用户名和密码的逻辑。这可以通过数据库,或者像这样简单的东西(但不推荐):
<?php
$users = array(
'user1' => 'password1',
'user2' => 'password2'
);
if ($users[$_POST['username']] == $_POST['password']) {
die(json_encode('login_success.php'));
}
die(json_encode(False));
?>
注意事项:
1)不要以明文存储密码。如果您使用的是PHP,请查看Bcrypt: http://phpmaster.com/why-you-should-use-bcrypt-to-hash-stored-passwords/ 至少,哈希和盐你的密码。
2)此jsfiddle不执行SSL,您应该强烈考虑登录公共站点
3)如果要将数据作为JSON返回,则必须将'dataType':'json'
添加到AJAX调用(我忘了小提琴)。
4)通过评估AJAX响应,您可以在.login-errors DIV中显示相应的错误消息。这只是一个简单的例子。
最后,如果您在公共站点上执行此操作,请阅读有关存储/访问登录凭据的一些安全最佳实践。如果这超出了您的期望,请考虑通过.htpasswd
阅读访问控制同样,这是一个非常简单的实现,我不会使用这样的东西,但希望它会让你开始。
编辑:为清楚起见,返回的'错误'消息是因为调用了'错误'函数,因为AJAX不适用于小提琴。您实际上想要将错误消息编码到“成功”函数中,这与最初看起来的反直觉一样。