Zend_Session问题

时间:2009-08-16 15:29:03

标签: php zend-framework session

我在互联网上阅读过一些文章,但我不明白:|,你能给我一个例子,如何制作这样的东西: $ _ SESSION ['name'] = 'value'; echo $ _SESSION ['name'] 。如何使用ZF创建这样的内容?

最诚挚的问候,

3 个答案:

答案 0 :(得分:6)

将其放在页面顶部,然后再显示:

<?php
    Zend_Session::start();

    if(!Zend_Registry::isRegistered('session'))
    {
       $session = new Zend_Session_Namespace('YourSiteName');
       Zend_Registry::set('session', $session);
    }
?>

修改会话:

<?php
    $session = Zend_Registry::get('session');
    $session->user_name = $user_name;
?>

阅读你的会话:

<?php
    $session = Zend_Registry::get('session');
    echo 'Hello '.$session->user_name.' !';
?>

或者查看当前会话命名空间中的所有值:

<?php
    $session = Zend_Registry::get('session');

    foreach ($session as $index => $value) 
    {
       echo "session->$index = '$value';<br />";
    }
?>

答案 1 :(得分:2)

你可以这样做(如教程所述):

$defaultNamespace = new Zend_Session_Namespace('Default');

if (isset($defaultNamespace->name))
{
    echo $defaultNamespace->name;
} 
else 
{
    $defaultNamespace->name = "hi";
}

首先,您需要使用以下方法创建会话对象:

$defaultNamespace = new Zend_Session_Namespace('Default');

通过定义自定义值代替默认值,这意味着您的所有变量都不会与来自其他系统的变量或系统中使用唯一值代替默认值的其他部分混合。

之后,每个变量都可以像常规类变量一样被访问

可以使用

分配任何变量
$defaultNamespace->variable_name = value;

要获得任何值,只需获得相同的值;

$variable - $defaultNamespace->variable_name; // gets value

正如Pascal所说,你还需要打电话

Zend_Session::start();

所有这一切。

要了解有关它的更多信息,请使用Basic Usage Examples.

答案 2 :(得分:2)

使用Zend Framework时,您不应直接使用$_SESSION,而应使用Zend_Session类。

您可能会在Basic Usage手册页上找到问题的答案。

例如,要使用会话中存储的numberOfPageRequests,您可以使用以下内容:

$defaultNamespace = new Zend_Session_Namespace('Default');

if (isset($defaultNamespace->numberOfPageRequests)) {
    // this will increment for each page load.
    $defaultNamespace->numberOfPageRequests++;
} else {
    $defaultNamespace->numberOfPageRequests = 1; // first time
}

直接使用$_SESSION可能看起来有点复杂,我承认......但这会给你一个连贯的,面向对象的界面 - 这至少是^^


当然,您可能需要在此之前使用

启动会话
Zend_Session::start();


如果您有其他问题,更具体,请不要犹豫!