我想显示回显5秒并将页面重定向到login.html但是当页面加载时需要5秒而不是加载页面并等待5秒然后重定向。
<?php
session_start();
if (isset($_SESSION['name'])) {
echo $_SESSION['name'];
} else {
echo "Login To Order";
sleep(5);
echo "<script type=\"text/javascript\">
window.location.href = \"login.html\";
</script>";
}
?>
编辑: 好吧,这似乎延迟了5秒,但代码执行仍在继续 进一步,但我希望它停止=&gt;回声5秒=&gt;重定向到另一页。
echo "Login To Order";
echo "<script type=\"text/javascript\">
window.setTimeout(function() {
window.location.href=\"login.html\";
}, 5000);
</script>";
echo "this should not be displayed";
回声“这不应该显示”; 我的观点是,我在下面有其他代码,我不想在其他情况下执行。
答案 0 :(得分:3)
PHP预处理服务器上的页面,然后将页面发送到客户端浏览器 - 在服务器上休眠很少等同于客户端上的延迟
使用setTimeout
将延迟放在客户端<?php
session_start();
if (isset($_SESSION['name'])){
echo $_SESSION['name'];
} else {
?>
Login To Order
<script>
setTimeout(function() {
window.location.href="login.html";
}, 5000);
</script>
<?php
exit(0);
}
?>
请注意如何从?>
关闭PHP预处理以使脚本更易于编写,然后在<?php
上重新启用PHP
甚至更简单,使用HTTP标头为您完成工作
<?php
session_start();
if (isset($_SESSION['name'])){
echo $_SESSION['name'];
} else {
header("refresh:5; url=login.html");
?>
Login To Order
<?php
exit(0);
}
?>
答案 1 :(得分:2)
sleep()
由服务器处理。
要在5秒后重定向到另一个页面,您可以随时使用PHP的refresh
参数 header()
:
header("refresh:5; url=login.html");
但是,考虑到您还希望在用户重定向之前显示输出,您可能希望在JavaScript中使用 setTimeout()
:
window.setTimeout(function() {
window.location.href=\"login.html\";
}, 5000);
希望这有帮助! :)
答案 2 :(得分:0)
而不是使用PHP使用Javascript来做你想做的事。
这是一个示例
<?php
session_start();
if (isset($_SESSION['name'])) {
echo $_SESSION['name'];
} else {
echo "Login To Order";
echo '<script>setTimeout(function(){ window.location.replace("http://stackoverflow.com"); }, 5000);</script>';
return;
/*other codes*/
}
?>