繁体   English   中英

PHP die()显示简短的白屏

[英]PHP die() shows brief white screen

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

$user->redirect('www.google.com');
die();

重定向功能链接到:

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

每当您重定向时,您都会短暂看到一个白色页面,然后是您重定向到的页面。 我假设白页是由die()引起的。

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

该问题与die()调用无关,但是您发送了错误的头文件以处理重定向。

做事的感觉

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

做:

public function redirect($url) {
    header("Location: $url", true);
}

甚至:

public function redirect($url, $temporal = false) {
    header("Location: $url", true, $temporal ? 302 : 301);
}

这样,您将发送状态代码“ 301”或“ 302”,以指示重定向是暂时的还是永久的。 默认为永久重定向,因为临时性很少有用(尽管在您的情况下,由于权限的原因而进行重定向,因此可能需要临时重定向)

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

除了使用“ Refresh:”标题之外,您还可以使用“ Location:”。 这样,不必刷新页面,并且可能会导致您所需的行为。

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

编辑:添加了默认$ url'/',因此,如果未提供url,则会重定向到首页

我对上一个版本感到失望。 帖子。 关于die()!

发送标题时,浏览器需要一些时间才能采取措施。 在这段时间之间,PHP进程将在您被重定向之前调用die()。 这是阿育王 位置和重定向因此它会向您显示一个黑页,然后您/访客将被重定向。

很好:设置die()结束过程,以避免程序内部进一步动作

不好:首先是空白页。

这取决于您的浏览器环境! 例如:一个非常慢的工作站将向您显示此行为,您必须在意。 想象浏览器确实知道标头重定向(今天(大多数情况下)不再存在)

要使浏览器可以采取措施,请使用以下命令:

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

在这种情况下,访问者会在当前页面上停留很长的时间,直到浏览器知道标题或cpu变慢,但在能够采取措施时才会采取措施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM