在继续PHP之前,如何等待一段时间?

时间:2011-09-29 02:44:07

标签: php

所以这是两个问题......

首先,当用户退出时,我想将它们重定向回登录页面。我通过使用header('login_form.php');来做到这一点,但是,在这样做之前,我尝试打印出文本“您已成功注销。您现在正被重定向到登录表单。”。我这样做是使用echo并回显文本,但是,标题运行得如此之快,我几乎立即转移回登录表单,没有机会阅读消息。那么,我怎样才能延迟一点,并且在用标题重定向用户之前让消息显示仅仅5秒左右?

我的第二个问题是,在登录表单上方显示“错误登录”的最佳方法是什么?因此,当我浏览到登录表单并输入错误的用户/密码,而不是转到“login.php”然后重定向回login_form.php时,它只是确定登录是否成功,如果不是只需在输入字段上方显示“不正确的登录”,而不是必须重定向回login_form(也不会通知用户登录不正确)。

3 个答案:

答案 0 :(得分:6)

返回一个简单的HTML页面,其中元刷新标记指向<head>中的所需位置。

<meta http-equiv="refresh" content="5;url=login_form.php">

这将在5秒后刷新(重定向)页面到给定的URL。我还考虑为不耐烦的人添加直接<a>链接。

<p>
   You are logged out. You will be redirected to the login page in 5 seconds. 
   Click <a href="login_form.php">here</a> if you're impatient.
</p>

我个人觉得5秒太长了。做到3。


关于你的第二个问题,只需让表单提交给self并使用输入字段旁边的动态内联错误消息重新显示相同的表单。仅在登录成功时重定向。

答案 1 :(得分:0)

  1. 在php中单独执行此操作很困难,甚至根据具体情况甚至不可能。相反,将它们带到logout.php,或显示“您已注销”的任何页面,只需添加meta refresh标题,如下所示: <meta http-equiv="refresh" content="5; url=login_form.php"> 这会在5秒内将它们重定向到login_form。这是一种流行的技术,但我无法保证它在所有情况下都能正常工作。但是,正如另一个答案所示,您可以包含直接重定向的链接。

  2. 这可以通过javascript完成(您可以使用ajax执行验证并显示相应的错误消息/让他们根据需要登录)。如果javascript不是一个选项,或者如果您还需要处理没有javascript的用户,则当login.php拒绝身份验证时,请设置_SESSION参数,例如_SESSION[login_fail_message] = true。在login_form.php上,检查此值是否为true。如果是,则显示“登录不正确”消息。登录尝试时清除此值(或理想情况下,如果他们离开页面)。

答案 2 :(得分:0)

对于第一部分,请注意更改位置标题将立即生效。某些站点允许登录表单显示用户已成功注销的消息。

对于第二部分,让javascript首先进行验证并在客户端显示任何错误。如果它传递了javascript,让服务器从POST执行服务器端验证并再次返回登录表单,但这次标记了错误区域。登录成功应该正常重定向它们。