Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php出口在函数中做什么?_Php - Fatal编程技术网

php出口在函数中做什么?

php出口在函数中做什么?,php,Php,嗨,我有这个功能 function fail($pub, $pvt = '') { global $debug; $msg = $pub; if ($debug && $pvt !== '') $msg .= ": $pvt"; $_SESSION['msg'] = $msg; header ("Location: /voting/"); exit; } 页面在到达exit命令之前应该重定向,对吗?但是,如果没

嗨,我有这个功能

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

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

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

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

是的,但是退出至关重要

由于页面的其余部分可能会被强制显示,如果有人只是选择忽略来自该文件的头响应,那么该出口只会确保后面没有其他内容,否则.php仍将处理页面的其余部分,并输出后面的内容


退出;是die()的别名,用于终止脚本的执行。

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

从:


终止脚本的执行。即使调用exit,也将始终执行。 exit是一种语言构造,如果未传递状态,则可以不使用括号调用它

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

当您删除退出时,屏幕上是否显示警告或任何内容?离开时?如果要停止脚本和/或重定向页面,则始终需要exit()。在使用header函数之后,最好使用exit或die终止其余部分。
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
    or exit("unable to open file ($filename)");