PHP die()显示简短的白色屏幕

PHP die()显示简短的白色屏幕,php,redirect,http-headers,Php,Redirect,Http Headers,当访问者无法访问当前页面时,我使用重定向功能将他们重定向到某个页面。功能如下: $user->redirect('www.google.com'); die(); 重定向功能链接到: public function redirect($url="",$time=0) { header("Refresh: $time; url=$url"); } 每当你被重定向时,你会看到一个白色的页面,后面跟着你被重定向到的页面。我假设白色页面是由die()引起的 我不喜欢它,我真的想摆脱它。

当访问者无法访问当前页面时,我使用重定向功能将他们重定向到某个页面。功能如下:

$user->redirect('www.google.com');
die();
重定向功能链接到:

public function redirect($url="",$time=0) {
    header("Refresh: $time; url=$url");
}
每当你被重定向时,你会看到一个白色的页面,后面跟着你被重定向到的页面。我假设白色页面是由
die()
引起的


我不喜欢它,我真的想摆脱它。

您可以使用“位置:”而不是使用“刷新:”标题。这样,页面就不必刷新,并且可能会导致您想要的行为

public function redirect($url="/") {
    header("Location: $url");
}

编辑:添加了默认的$url“/”,这样,如果没有提供url,它将重定向到主页

问题与
die()
调用无关,而是因为您发送了错误的头来处理重定向

行当

public function redirect($url="",$time=0) {
    header("Refresh: $time; url=$url");
}
做:

甚至:

public function redirect($url, $temporal = false) {
    header("Location: $url", true, $temporal ? 302 : 301);
}
这样,您将发送状态代码“301”或“302”,以指示重定向是暂时的,还是永久的。默认为永久重定向,因为临时重定向很少有用(尽管在您的情况下,由于权限的原因,临时重定向可能是合适的)


(我还删除了
$url
的默认值,因为重定向到空url没有多大意义)

我指向上一个url。帖子。这是关于死亡的

发送标题时,浏览器需要一点时间来执行操作。在此期间,php进程在重定向之前调用die()。这是asyc。定位和重定向 因此,它会显示一个黑色页面,然后您/访问者会被重定向

好:将die()设置为结束进程,以避免程序中的进一步操作

不正确:空白页为先。< /P> 这取决于您的浏览器环境!一个非常慢的工作站会向你展示这种行为,你必须关心它。想象一下,浏览器确实知道标题重定向(现在它(大部分)已经不存在了)

要更改浏览器以执行操作,请使用以下命令:

function someaction() {
    // ... 
    $user->redirect('www.google.com');
    // which give the time for the browser  
    // without further execution of your code
    return; 
}

在这种情况下,访问者在当前页面上停留的时间与以前一样长,直到浏览器知道标题或cpu速度较慢,但能够采取行动时才会采取行动。

否,这是由刷新标题引起的。为什么不能直接用位置标头重定向用户?没有办法删除空白页面,当前,服务器返回一个空的页眉,页眉上写着“转到另一个页面”。此空白页将一直保留,直到浏览器加载下一页。你可以做的是输出一个带有“重定向,请稍候”这样的消息的静态页面,如果你不想要一个空页面哦,是的,这非常有效!不知道位置,谢谢你教我!
function someaction() {
    // ... 
    $user->redirect('www.google.com');
    // which give the time for the browser  
    // without further execution of your code
    return; 
}