我有一个简单的问题,但我不知道.我想在重定向到其他页面之前先显示消息,但我的代码只是直接重定向页面而不显示消息,或者显示时间太短我不确定..我的代码如下..请提示.非常感谢.
echo "Please Log In First";
header("location: login6.php");
Run Code Online (Sandbox Code Playgroud)
Sun*_*nry 35
你不能这样做.PHP标头必须在任何内容之前发出,所以正确的顺序是:
header("location: login6.php");
echo "Please Log In First";
Run Code Online (Sandbox Code Playgroud)
但这些代码会立即重定向,不会让您看到内容.所以我会通过JavaScript进行重定向:
echo "Please Log In First";
echo "<script>setTimeout(\"location.href = 'http://www.forobd2.com';\",1500);</script>";
Run Code Online (Sandbox Code Playgroud)
Kon*_*ole 26
您可以使用标头刷新.它将在重定向之前等待指定的时间.然后,您可以显示您的消息.
header( "refresh:5; url=login.php" ); //wait for 5 seconds before redirecting
Run Code Online (Sandbox Code Playgroud)
HTTP刷新重定向等待5秒:
header('Refresh:5; url=login6.php');
echo 'Please Log In First';
Run Code Online (Sandbox Code Playgroud)
重定向是重定向;-)
如果您通过使用Location:标题重定向到另一个页面来告诉浏览器,则浏览器会执行以下操作:它会重定向到另一个页面.而浏览器做到这一点立即 -没有任何延迟.
因此,您echo根本不会显示.
首先设置标头
此外,您需要在每个其他输出操作之前设置标头(如Fred -ii-所指出的):
// First, echo headers
header("location: login6.php");
// Then send any other HTML-output
echo "Please Log In First";
Run Code Online (Sandbox Code Playgroud)
最好不要使用自动重定向
很可能,您不会显示消息,然后 - 在一定时间后 - 自动重定向到另一个页面.人们可能会对这个过程感到困惑.这样做更好:
显示登录页面并在此页面上显示用户提示符或错误消息.
一般解决方案
在用户会话中准备一个组件,其中包含要在下一个脚本实例中显示的信息.此组件可能是这样的消息列表:
$_SERVER[ 'sys$flashMessagesForLater' ] = array(
"Sorry, userID and password didn't match.",
"Please login again."
);
Run Code Online (Sandbox Code Playgroud)
每次脚本请求进入时,检查是否$_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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77470 次 |
| 最近记录: |