如何延迟在php中执行代码块?
if ($qry->execute($leads)) {
echo'<div class="note success">' .
$_POST["first_name"] . ', Your entry was successful!
</div>';
// Set up email params
此代码显示“成功”消息,然后通过电子邮件发送给用户。显示消息后,我想重定向用户。
这在PHP中可行吗?我需要使用JavaScript吗?
谢谢!
答案 0 :(得分:13)
如果要延迟执行PHP代码,可以使用sleep功能。但是,您似乎想要延迟客户端的重定向。您可以使用JavaScript,<meta>
刷新和Refresh
标题执行此操作。
使用Refresh
标题:
header('Refresh: «timeout in seconds»; URL=http://example.com/myurl');
使用<meta>
刷新:
<meta http-equiv="refresh" content="«timeout in seconds»; URL=http://example.com/myurl">
使用JavaScript:
setTimeout(function(){
location.replace("/myurl");
},«timeout in milliseconds»);
最好是使用这三者的组合,并为已禁用这些重定向技术的用户显示一条消息,其中包含允许他们手动点击的链接。
答案 1 :(得分:3)
由于已经发生输出,因此无法进行HTTP标头重定向。相反,您应该设置元刷新以在HTML文档的<head>
中重定向用户:
<meta http-equiv="refresh" content="10;url=http://www.example.com/newpage.php" />
答案 2 :(得分:2)
PHP是一种服务器端语言,在向用户显示任何内容之前执行。
这是在呈现页面之后必须发生的事情,所以是Javascript将是更好的解决方案。