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

时间:2014-01-03 13:41:09

标签: php session variables global-variables

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

如您所见:我首先将$ _SESSION ['showerdoor'] ['glasstype']放在变量$ glasstype中。

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

但是现在我想使用variabe $ glasstype($ _SESSION ['showerdoor'] ['glasstype'])在下面的函数中(在下面的wordpress页面中)并且不起作用。但如果我在页面上使用$ _SESSION ['showerdoor'] ['glasstype']就可以了。

我可以做些什么来使用$ 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;
}

3 个答案:

答案 0 :(得分:0)

  

现在我可以在我的函数“sd_wizard_glass_type”中使用$ glasstype(作为会话变量)。

没有。这是一个局部变量。当你这样做

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

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

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

中来设置
$_SESSION['showerdoor']['glasstype'] = $glasstype;

答案 1 :(得分:0)

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

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

$glasstype = sd_wizard_glasstype();

现在glasstype设置在函数

之外

如果你需要将glasstype传递回函数

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

然后以相同的方式调用它

$foo = newfunction($glasstype);

您还可以使用关键字global创建一个全局变量,但这不会超出给定页面

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

答案 2 :(得分:-3)

使用指针:

$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'].