2011-09-27 65 views
0

假设我正在构建登录系统。用户在字段中输入用户名和密码,并通过HTTPS将其发送到服务器,该服务器在加载页面之前验证登录。如果发送了错误的密码,登录显然会立即失败,但人们希望错误消息稍后显示在登录框附近的页面中。“现在评估,稍后回应”的最佳实践?

显而易见的解决方案是设置一个全局标志并让登录框检查它并在必要时添加错误消息,但我的理解是最好避免使用全局变量。有没有另一种直接的方法来实现这个功能?

回答

0

对于非AJAX登录页面,通常会将用户浏览器重定向到带有url中额外查询参数的登录页面。在伪代码中,以下是登录验证控制器代码段:

success = checkLogin(username,password) 
if (success == false) 
    redirect('http://example.com/login?failedlogin=true') 

登录页面控制器将负责检测此查询参数并告诉视图代码显示失败消息。我不认为'全球旗帜'一词适用于这种做法,所以它应该符合你的要求。

如果登录页面使用Ajax,则登录页面上的Javascript采用AJAX调用的结果并使用失败消息更新适当的DOM元素。

+0

将一个标志放入地址栏看起来像是一个非常肮脏的解决方案 - 甚至比抛出一个全局变量更糟。我认为一般的经验法则是$ _GET数组只应用于不关心人们直接链接到结果页面的人。 –