0

我一直在分析 joomla 会话,遇到了一些问题。问题之一是会话名称。

请参阅此代码:(seesion.php#894)

    protected function _setOptions(array $options)
{
    // Set name
    if (isset($options['name']))
    {
        session_name(md5($options['name']));
    }

    // Set id
    if (isset($options['id']))
    {
        session_id($options['id']);
    }

    // Set expire time
    if (isset($options['expire']))
    {
        $this->_expire = $options['expire'];
    }

    // Get security options
    if (isset($options['security']))
    {
        $this->_security = explode(',', $options['security']);
    }

    if (isset($options['force_ssl']))
    {
        $this->_force_ssl = (bool) $options['force_ssl'];
    }

    // Sync the session maxlifetime
    ini_set('session.gc_maxlifetime', $this->_expire);

    return true;
}  

我的问题是 $options 数组,我将其添加到脚本中:

print_r($options);

结果是:数组([name] => 266e79f0eac297f66eaf7926636f03fa [expire] => 900)

这个元素是从哪里来的?我的意思是有一个值可以让我这样做:

md5('value');

并获得相同的 [name] 元素

4

1 回答 1

0

嘿,我找到了答案。

会话值计算如下。

$hash = md5(md5($secret.'site'));

其中 $secret 在配置文件中定义。

使用以下代码获取会话值。

include_once(dirname(dirname( FILE )).DIRECTORY_SEPARATOR.'configuration.php');

$config = 新的 JConfig;$秘密= $配置->秘密;

$hash = md5(md5($secret.'site'));

所以对你来说,name 变量的值来自 md5($secret.'site') ,它是会话值。如果您再次使用 md5,它将为您提供会话 cookie 值。

于 2013-11-12T15:01:48.343 回答