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

时间:2013-02-27 00:53:06

标签: php javascript ajax authentication optimization

某些网站(例如YahooGoogle)使用Ajax检查用户名/密码是否有误。显然必须有服务器端身份验证,因为任何人都可以更改本地JavaScript并欺骗它认为用户名/密码是正确的。我想知道如何有效地完成这项工作,因为服务器不会两次检查相同的用户名/密码?请考虑以下用户登录网站的情况:

  1. 用户进入登录页面
  2. 用户输入用户名/密码并点击提交
  3. 通过Ajax,如果输入的用户名/密码正确,服务器将与客户端通信
  4. 服务器回复说明用户名/密码是否正确 - 在本例中为
  5. 提交<form>并且间歇页面通过POST获取输入的值并在服务器端再次处理它们以验证用户名/密码是否正确以及是否设置了变量会议
  6. 在步骤5中,服务器第二次检查相同的用户名/密码是否正确,如步骤3中所示。有没有办法缓存步骤3中的结果或使流程更有效?此外,服务器已在步骤3中发送了用户名/密码。但我不确定这是否会加速该过程。

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

3 个答案:

答案 0 :(得分:2)

在第3步,您的onsubmit处理程序会将您的AJAX请求发送到服务器以验证凭据 阻止正常表单提交(通过调用{{1在处理程序中或从处理程序返回false),因此第5步永远不会发生。 如果禁用了javascript,那么您将没有onsubmit处理程序,而是会发生正常的表单提交。

在您的步骤4中,如果您收到“正确”的响应,那么您的AJAX处理程序可以重定向到新页面;如果这是一个“不正确”的回复,你会留在登录页面上,清除表格,并提出你的错误信息。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

正如我的评论所说,不确定我完全同意你的过程,这就是我想象的方式

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

    1. 用户进入登录页面
    2. 用户输入用户名/密码并点击提交
    3. 表单路由到php页面查询数据库以获取用户凭据,如果正确,请设置会话和cookie并重定向到correctLogin.php
    4. 如果没有重定向到incorrectLogin.php