【问题标题】:How do I retain value of a variable after exit() function in PHP如何在 PHP 中的 exit() 函数后保留变量的值
【发布时间】:2012-09-06 13:57:23
【问题描述】:

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


    【解决方案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);          
        }
    }
    

    【讨论】:

    • 您将需要对值进行 urlencode,否则它可能会根据错误文本获得不完整的值(如果不是像这种情况下的数字)。另外,将$ee 的初始化移到header() 行之前:)
    • 这更像是一个快速了解想法的示例,但感谢您所做的更改。
    • 谢谢@Phil,这是我以前一直在使用的模式,正在考虑是否有更好的方法。
    • 最好的方法是将它放在一个名为error:oldsession 变量中,而不是在刷新页面时为空session 这样url 不会被阻塞。跨度>
    【解决方案2】:

    如果你exit,那么脚本已经完成,如果不再次执行就不能做任何其他事情。

    在调用exit 之前 回显错误消息(不是 STDOUT,因为您正在重定向)。

    如果你想在脚本完成后使用变量中的数据,那么你必须将它存储在某个地方它将持续存在,然后在脚本(或不同的脚本) 将在未来执行。

    你可能存放它的地方是:

    • 饼干
    • 一个会话
    • 一个数据库
    • 通过网络服务器
    • 在文件中(不要使用文件,您必须处理竞争条件和文件系统效率低下,改用数据库服务器,以便为您处理所有事情)

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-01-03
        • 1970-01-01
        • 2015-05-25
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 2018-03-04
        • 1970-01-01
        相关资源
        最近更新 更多