如何在PHP中的exit()函数之后保留变量的值


How do I retain value of a variable after exit() function in PHP

请确定在php中的exit函数之后获取变量新值的最佳方式。下面的脚本是一个示例,我想获得变量$ee的新值,并在调用exit函数后使用它来回显错误消息。

$ee = 0;
$required = array('name', 'location', 'email', 'school', 'age');
if(isset($_POST['name'])){
    foreach($required as $ff){
    if(empty($_POST[$ff])){
    header("location:register.php");
    $ee = 1;
    exit($ee);          
    }
    }
    }

保持该变量有效的最简单方法是通过PHP $_GET,例如:

foreach($required as $ff){
    if(empty($_POST[$ff])){
        $ee = 1;
        $encoded_ee = urlencode($ee);
        header("location:register.php?error=" . $encoded_ee);
        exit($ee);          
    }
}

如果您exit,那么脚本已经完成,如果不再次执行,就无法执行任何其他操作。

在调用exit之前,回显错误消息(由于正在重定向,所以不回显STDOUT)

如果您想在脚本完成后使用变量中的数据,则必须将其存储在将持续存在的某个地方,然后在将来执行脚本(或其他脚本)时将其读回。

您可能会将其存放在以下位置:

  • 饼干
  • 会话
  • 数据库
  • 通过网络服务器
  • 在文件中(不要使用文件,你必须处理竞争条件和文件系统效率低下的问题,而是使用数据库服务器,这样所有的事情都会由你来处理)

有一个register_shutdown_function函数,它允许您注册exit事件上升时将调用的函数。

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

注册要在脚本执行完成或调用exit()后执行的回调。

可以对register_shutdown_function()进行多次调用,每次调用的顺序与注册时相同。如果在一个注册的关闭函数中调用exit(),则处理将完全停止,并且不会调用其他注册的关闭功能。