我有一个简单的问题,但我不知道。我想在重定向到其他页面之前先显示消息,但我的代码只是直接重定向页面而不显示消息,或者显示时间太短我不确定..我的代码如下..请建议。非常感谢。
echo "Please Log In First";
header("location: login6.php");
你不能那样做。 PHP header 必须在任何内容之前发送,所以正确的顺序是:
header("location: login6.php");
echo "Please Log In First";
但是这些代码会立即重定向,并且不会让您看到内容。 所以我会通过 JavaScript 进行重定向:
echo "Please Log In First";
echo "<script>setTimeout(\"location.href = 'http://www.example.com';\",1500);</script>";
您可以使用标题刷新。它将在重定向之前等待指定的时间。然后您就可以显示您的消息了。
header( "refresh:5; url=login.php" ); //wait for 5 seconds before redirecting
HTTP刷新重定向等待5秒:
header('Refresh:5; url=login6.php');
echo 'Please Log In First';
重定向就是重定向;-)
如果您使用
Location:
标头告诉浏览器重定向到另一个页面,浏览器就会执行以下操作:重定向到另一个页面。 浏览器会立即执行此操作 - 没有任何延迟。
因此,您的
echo
根本不会显示。
先设置标题
此外,您需要在每个输出操作之前设置标题(如Fred -ii-所指出):
// First, echo headers
header("location: login6.php");
// Then send any other HTML-output
echo "Please Log In First";
最好不要使用自动重定向
很可能,您不会显示消息,然后在一段时间后自动重定向到另一个页面。 人们可能会对这个过程感到困惑。最好这样做:
显示登录页面 并且呈现用户提示或 此页面上的错误消息。
通用解决方案
在用户会话中准备一个组件,其中包含要显示的信息在下一个脚本实例。该组件可能是这样的消息列表:
$_SERVER[ 'sys$flashMessagesForLater' ] = array(
"Sorry, userID and password didn't match.",
"Please login again."
);
每次传入脚本请求时,检查
$_SERVER[ 'sys$flashMessagesForLater' ]
是否为非空数组。
如果是这种情况,将这些值发送到生成的 HTML 页面上明确定义的。明确定义的位置始终位于同一位置,即每个页面顶部的某个位置。您可能希望在错误消息周围添加一个阅读框。
您可能想准备这样的课程:
class CFlashMessageManager {
static public function addFlashMessageForLater( $message ) {
$_SERVER[ 'sys$flashMessagesForLater' ][] = $message;
}
static public function flashMessagesForLaterAvailable() {
return isset( $_SERVER[ 'sys$flashMessagesForLater' ] )
&& is_array( $_SERVER[ 'sys$flashMessagesForLater' ] )
&& ( 0 < count( $_SERVER[ 'sys$flashMessagesForLater' ] ))
;
}
static public function getFlashMessageForLaterAsHTML() {
return implode( '<br />', $_SERVER[ 'sys$flashMessagesForLater' ] );
}
} // CFlashMessageManager
你可以做一个 html 重定向:把它放在你的头上
<meta http-equiv="refresh" content="5; url=http://example.com/">
并且页面会在5秒后重定向(将5改为你想要的秒数)
php 中的工作示例。
echo "<script>";
echo " alert('Import has successfully Done.');
window.location.href='".site_url('home')."';
</script>";
或者你可以使用简单的javascript:
echo "alert('请先登录!');location.href = 'http://example.com/whatyouwant/';";
尝试睡眠功能
<?php
sleep(10);//seconds to wait..
echo "Please Log In First";
header("location: login6.php");
?>