[英]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.