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

时间:2012-09-06 13:57:23

标签: php exit

请问在php中退出函数之后获取变量新值的最佳方法是什么。我的下面的脚本是一个示例,我想获取变量$ 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);          
    }
    }

    }

3 个答案:

答案 0 :(得分:1)

如果您exit,则脚本已完成,无法再执行任何其他操作。

回复错误消息(不是因为你正在重定向而是STDOUT)之前你打电话给exit

如果您想在脚本完成后使用变量中的数据,那么您必须将其存储在它将保留的位置,然后在脚本(或其他脚本)中将其读回)将来执行。

您可能存储的地方是:

  • 一个cookie
  • 会话
  • 数据库
  • 通过网络服务器
  • 在文件中(不要使用文件,您必须处理竞争条件和文件系统效率低下,请使用数据库服务器,以便为您完成所有这些工作)。

答案 1 :(得分:1)

register_shutdown_function函数,允许您注册在exit事件上升时调用的函数。

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

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

     

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

答案 2 :(得分:1)

保持该变量存活的最简单方法是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);          
    }
}