PHP 退出在函数中做什么


what is php exit doing in function?

嗨,我有这个功能

function fail($pub, $pvt = '')
{
    global $debug;
    $msg = $pub;
    if ($debug && $pvt !== '')
        $msg .= ": $pvt";
    $_SESSION['msg'] = $msg;
    header ("Location: /voting/"); 
    exit;
}

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

浏览器在脚本结束后收到整个响应之前不会重定向,并且 PHP 脚本在浏览器重定向时肯定不会停止,因此浏览器应该重定向时结束脚本是最好的做法。

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

从 php 文档中:

<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

是的,但是退出至关重要。

由于可以强制显示页面的其余部分,如果有人只是选择忽略该文件的标头响应,则该退出只是确保它之后没有其他内容,否则.php仍将处理页面的其余部分,并输出之后的任何内容。

exit; 是 die() 的别名,它终止脚本的执行。

终止脚本的执行。即使调用 exit,也会始终执行关闭函数和对象析构函数。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