网站如何在不重新加载页面的情况下检查登录凭据?

How do websites check the login credentials without reloading the page?

本文关键字:情况下 检查 登录 加载 新加载 网站      更新时间:2023-09-26

一些网站,如Yahoo和Google,使用Ajax检查用户名/密码是否错误。显然,必须有服务器端身份验证,因为任何人都可以更改本地JavaScript并欺骗它认为用户名/密码是正确的。我想知道这是如何有效地完成,因为服务器不会检查相同的用户名/密码两次?考虑以下场景,用户登录到一个网站:

  1. 用户进入登录页面
  2. 用户输入用户名/密码,点击提交
  3. 如果输入的用户名/密码正确,服务器通过Ajax与客户端通信
  4. 服务器回复用户名/密码是否正确-在本例中为
  5. <form>被提交,断断续续的页面通过POST接收输入的值,并在服务器端再次处理它们,以验证用户名/密码是否正确,是否在会话中设置了变量

在步骤5中,服务器第二次检查用户名/密码是否与步骤3中相同。是否有一种方法可以缓存步骤3的结果或使该过程更有效?此外,在步骤3中已经向服务器发送了用户名/密码。但我不确定这是否能加速这个过程。

我使用MySQL数据库来存储用户名和密码

在第3步,您的onsubmit处理程序将发送您的AJAX请求到服务器来验证凭据阻止正常的表单提交(通过调用.preventDefault()在处理程序或从处理程序返回false),所以步骤5将永远不会发生。如果javascript被禁用,那么你就不会有onsubmit处理程序,而会发生正常的表单提交。

在步骤4中,如果您收到"正确"响应,则AJAX处理程序可以重定向到新页面;如果它是一个"不正确"的响应,您将留在登录页面上,清除表单,并显示您的错误消息。

在第3点,JS应该将表单提交给服务器端处理并等待响应。如果JS是禁用的,那么表单会正常提交。

正如我的评论所说,我不确定我完全同意你的过程,这就是我对它的看法

  1. 用户进入登录页面
  2. 用户输入用户名/密码,点击提交
  3. Jquery触发onclick动作,抓取用户输入,向php发送ajax请求,php检查和查询是否找到凭据。
  4. 如果它们是php设置会话和cookie并返回ajax结果。
  5. 如果凭证不正确,php也会处理这个问题。

如果你不想使用ajax

  1. 用户进入登录页面
  2. 用户输入用户名/密码,点击提交
  3. 表单路由到一个php页面,查询数据库的用户凭证,如果他们是正确的,设置session和cookie并重定向到correctLogin.php
  4. 如果没有重定向到incorrectLogin.php