将 SESSION 变量放在变量中并全局使用



我正在做一个将数据保存在会话变量中的项目。这是一个 Wordpress 项目,我使用函数"sd_wizard_glass_type"将其显示为我网站页面上的模板。

如您所见:我首先在变量$glasstype中输入了 _SESSION['淋浴门']['玻璃类型']。

然后,如果设置了 $_GET['glasstype'],我把它放在$glasstype。现在我可以在我的函数"sd_wizard_glass_type"(作为会话变量)的任何地方使用$glasstype。

但是现在我想在以下函数(在下面的wordpress页面中)中使用variabe $glasstype($_SESSION['淋浴门']['glasstype']),但这不起作用。但是如果我在页面上使用 $_SESSION['淋浴门']['玻璃类型'] 确实有效。

我可以做些什么来使用 $glasstype 作为会话变量?

// Step: Glass type
function sd_wizard_glass_type() { 
    $glasstype = $_SESSION['showerdoor']['glasstype'];
    if(isset($_GET['glasstype'])) :
        $glasstype = $_GET['glasstype'];
    endif;
}

最后更新:

function sd_wizard_glass_type() { 
    if(isset($_GET['glasstype'])) :
        $_SESSION['showerdoor']['glasstype'] = $_GET['glasstype'];
    endif;
    $_SESSION['showerdoor']['glasstype'] = $glasstype;
}
你可以

尝试的几件事。 首先,如果您需要变量在页面之间持久化,那么将其粘贴到会话中是个好主意。 如果你只需要它存在于那个页面上,那么你可以使用参数和返回值来移动它。 例如

function sd_wizard_glass_type() { 
    if(isset($_GET['glasstype'])) :
        $type = $_GET['glasstype'];
    else
        $type = $_SESSION['showerdoor']['glasstype'];
    return $type;
}
$glasstype = sd_wizard_glasstype();

现在在功能之外设置了玻璃类型

如果您需要将 GlassType 传递回函数

function newfunction($glasstype)
{
    //stuff
    //return something;
}

然后以相同的方式调用它

$foo = newfunction($glasstype);

您还可以使用关键字global使变量全局化,但这不会持续到给定页面之后

编辑:这里要知道的主要事情是PHP中的变量范围。 如果在函数内声明变量,则不能在函数外部使用它。 如果在函数外部声明它,则不能在函数内使用它,除非您使用 global 关键字或将其作为参数传递

现在我可以在我的函数"sd_wizard_glass_type"(作为会话变量)的任何地方使用$glasstype。

不。这是一个局部变量。当你这样做时

$glasstype = $_SESSION['showerdoor']['glasstype'];

将会话变量的值复制到局部变量中。

可以通过将它们放在$_SESSION超全局中来设置会话变量:

$_SESSION['showerdoor']['glasstype'] = $glasstype;

使用指针:

$glasstype = &$_SESSION['showerdoor']['glasstype'];

但是如果你尝试:

function toto()
{
    $glasstype = &$_SESSION['showerdoor']['glasstype'];
    $glasstype = 42;// Work
}
toto();
$glasstype = 42*42; // Fail because $glasstype is a local var
// If you want to do this, replace all $glasstype by $_SESSION['showerdoor']['glasstype'].

最新更新