什么是php退出功能?

时间:2012-07-05 08:04:22

标签: php

嗨,我有这个功能

function fail($pub, $pvt = '')
{
    global $debug;
    $msg = $pub;
    if ($debug && $pvt !== '')
        $msg .= ": $pvt";

    $_SESSION['msg'] = $msg;
    header ("Location: /voting/"); 
    exit;
}

页面应该在到达退出命令之前重定向吗?但是,如果没有exit命令,则该功能无法正常工作(即使应该重定向,它仍会继续)。如果有人知道你可以解释为什么代码继续,如果函数没有退出,即使在两种情况下它都将重定向?

4 个答案:

答案 0 :(得分:6)

在脚本结束后收到整个响应之前,浏览器不会重定向,并且当浏览器重定向时,PHP脚本肯定不会停止,所以当浏览器被假定时结束脚本重定向是最好的行动方式。

答案 1 :(得分:4)

'header'函数为最终输出添加一个标题,该标题将发送到浏览器,因此重定向实际上发生在客户端。这就是为什么你可以在'重定向'之前继续执行代码。 'exit'结构(不是函数)可以避免这种情况。

来自php documentation

<?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 functionsobject destructors。 exit是一种语言结构,如果没有传递状态,则可以在没有括号的情况下调用它。

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
    or exit("unable to open file ($filename)");

http://php.net/manual/en/function.exit.php