网站如何在不重新加载页面的情况下检查登录凭据?
How do websites check the login credentials without reloading the page?
一些网站,如Yahoo和Google,使用Ajax检查用户名/密码是否错误。显然,必须有服务器端身份验证,因为任何人都可以更改本地JavaScript并欺骗它认为用户名/密码是正确的。我想知道这是如何有效地完成,因为服务器不会检查相同的用户名/密码两次?考虑以下场景,用户登录到一个网站:
- 用户进入登录页面
- 用户输入用户名/密码,点击提交
- 如果输入的用户名/密码正确,服务器通过Ajax与客户端通信
- 服务器回复用户名/密码是否正确-在本例中为
-
<form>
被提交,断断续续的页面通过POST
接收输入的值,并在服务器端再次处理它们,以验证用户名/密码是否正确,是否在会话中设置了变量
在步骤5中,服务器第二次检查用户名/密码是否与步骤3中相同。是否有一种方法可以缓存步骤3的结果或使该过程更有效?此外,在步骤3中已经向服务器发送了用户名/密码。但我不确定这是否能加速这个过程。
我使用MySQL数据库来存储用户名和密码
在第3步,您的onsubmit
处理程序将发送您的AJAX请求到服务器来验证凭据和阻止正常的表单提交(通过调用.preventDefault()
在处理程序或从处理程序返回false),所以步骤5将永远不会发生。如果javascript被禁用,那么你就不会有onsubmit处理程序,而会发生正常的表单提交。
在步骤4中,如果您收到"正确"响应,则AJAX处理程序可以重定向到新页面;如果它是一个"不正确"的响应,您将留在登录页面上,清除表单,并显示您的错误消息。
在第3点,JS应该将表单提交给服务器端处理并等待响应。如果JS是禁用的,那么表单会正常提交。
正如我的评论所说,我不确定我完全同意你的过程,这就是我对它的看法
- 用户进入登录页面
- 用户输入用户名/密码,点击提交 Jquery触发onclick动作,抓取用户输入,向php发送ajax请求,php检查和查询是否找到凭据。
- 如果它们是php设置会话和cookie并返回ajax结果。
- 如果凭证不正确,php也会处理这个问题。
或 如果你不想使用ajax
- 用户进入登录页面
- 用户输入用户名/密码,点击提交
- 表单路由到一个php页面,查询数据库的用户凭证,如果他们是正确的,设置session和cookie并重定向到correctLogin.php
- 如果没有重定向到incorrectLogin.php
相关文章:
- 在不重新运行jquery验证的情况下检查表单是否有效
- 如何在不包括当前日期的情况下检查日期是否不是过去
- 在 d3.js 中,如何在不进行新选择的情况下检查元素是否已被删除
- 如何在不按按钮的情况下检查重复的电子邮件地址
- 如何在不等待用户使用 JavaScript 键入字符的情况下检查 capslock 是否打开
- 如何在不单击btn的情况下检查每个键入的单词
- 如何在零隐式等待的情况下检查硒中是否存在警报
- 如何在不使用插件的情况下检查视口中的哪个部分
- 在Javascript中,如何在不更改函数的情况下检查函数是否处于严格模式*
- 在没有Jquery的情况下检查所有单选按钮
- 在不下载文件的情况下检查下载链接是否正常工作
- 为什么在不涉及iframe的情况下检查iframe父函数返回true ?
- 如何在我的情况下检查所有的复选框
- 如何在不使用JavaScript库的情况下检查DOM的HTML组件何时加载?
- ASP(经典)/IIIS 7.5-您可以在不刷新会话的情况下检查会话是否超时吗
- 网站如何在不重新加载页面的情况下检查登录凭据?
- 如何在没有控制台错误的情况下检查JavaScript中是否存在资源
- 我们如何在不与服务器建立任何连接的情况下检查我们的 IP 地址
- 如何在每次不触发命令的情况下检查css的变化
- 如何在不使用setInterval/timeout的情况下检查实时更新