使用PHP $ _SESSION变量,然后取消设置

我正在构建一个Drupal 8网站。在模块预处理功能中,我试图检查页面加载时是否退出$_SESSION变量,对该变量进行操作,然后取消设置该变量。这是代码的简化版本:

function geolocation_filter_preprocess_page() {
  if (isset($_SESSION['blocked_submission'])) {
    $messageText = $_SESSION['blocked_submission']['text'];
    $messageType = $_SESSION['blocked_submission']['type'];
    echo $messageText . $messageType;

    unset($_SESSION['blocked_submission']);
  }
}

如果我删除了unset函数调用,那么文本将按预期打印出来。

除非代码执行进入if块,否则无法取消设置变量,但是回声不会像未进入if块那样发生。我以为PHP是线性执行的,所以我希望echo语句会发生,然后$_SESSION变量将不会被设置。我想念什么?

caoxueqiang2009 回答:使用PHP $ _SESSION变量,然后取消设置

在某些情况下,除非先启动会话,否则取消会话var无效。如果您是从登出页面引用的,则可能正在检查您的代码。 仅当session_start(); unset函数有效在您的脚本上被调用

 session_start();

在您的情况下,您可以像下面这样声明会话,因此,这意味着您的代码可能引用了未设置的变量,因此在尝试输出它们之前,请尝试检查类型和文本。

 $_SESSION['blocked_submission'] = "";

也 不要用$_SESSION取消整个unset($_SESSION)的设置,因为这将禁止通过$ _SESSION超全局变量注册会话变量。

本文链接:https://www.f2er.com/3148197.html

大家都在问