重定向就是重定向 ;-)
如果您通过使用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