2011-09-29 64 views
0

所以这是两个问题...在继续使用PHP之前,如何等待一段时间?

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

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

+3

为什么你需要登录闪屏?如果登录成功,只需将用户直接重定向到他们想要去的地方 – NullUserException

+0

将来,请在单独的问题中询问每个个人问题。 – BalusC

+0

@NullUserExceptionఠ_ఠ:在某些情况下,我认为它可能会有用。如果你只是说“你没有登录”,那么它是相当无用的,但如果它包含一个不错的欢迎消息,如“欢迎回来,用户!我们很高兴再次见到你。”那就完全没问题。这是网站的偏好,类似于它的存储偏好,当你走进来时是否有门口迎宾。 – animuson

回答

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.


关于你的第二个问题,只是让表单提交自我,并重新与动态联的错误消息非常相同的表单的输入域旁边。只有登录成功时才会重定向。

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

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

0

对于第一部分,要知道更改位置标题会立即生效。有些网站允许登录表单显示用户已成功注销的消息。

对于第二部分,让JavaScript首先进行验证并显示客户端的任何错误。如果它传递了javascript,请让服务器通过POST进行服务器端验证,然后再次返回登录表单,但这次标记了错误区域。登录成功应该像平常那样重定向它们。

相关问题