嗨,我有这个功能
function fail($pub, $pvt = '')
{
global $debug;
$msg = $pub;
if ($debug && $pvt !== '')
$msg .= ": $pvt";
$_SESSION['msg'] = $msg;
header ("Location: /voting/");
exit;
}
页面应该在到达退出命令之前重定向吗?但是,如果没有exit命令,则该功能无法正常工作(即使应该重定向,它仍会继续)。如果有人知道你可以解释为什么代码继续,如果函数没有退出,即使在两种情况下它都将重定向?
答案 0 :(得分:6)
在脚本结束后收到整个响应之前,浏览器不会重定向,并且当浏览器重定向时,PHP脚本肯定不会停止,所以当浏览器被假定时结束脚本重定向是最好的行动方式。
答案 1 :(得分:4)
'header'函数为最终输出添加一个标题,该标题将发送到浏览器,因此重定向实际上发生在客户端。这就是为什么你可以在'重定向'之前继续执行代码。 'exit'结构(不是函数)可以避免这种情况。
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
答案 2 :(得分:0)
是的,但是退出是至关重要的。
由于可以强制显示页面的其余部分,如果有人只是选择忽略该文件的标题响应,那么退出只是确保其后没有其他内容,否则.php仍会处理其余的页面,然后输出之后的内容。
出口;是die()的别名,它终止了脚本的执行。
答案 3 :(得分:0)
终止脚本的执行。即使调用exit,也会始终执行Shutdown functions和object destructors。 exit是一种语言结构,如果没有传递状态,则可以在没有括号的情况下调用它。
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or exit("unable to open file ($filename)");