我一直在分析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);
结果是:Array([name] => 266e79f0eac297f66eaf7926636f03fa [expire] => 900)
这个元素来自哪里?我的意思是有一个值可以让我这样做:
md5('value');
并获得相同的[name]元素
答案 0 :(得分:0)
会话值计算如下。
$ hash = md5(md5($ secret.netite'));
其中$ secret在配置文件中定义。
使用以下代码获取会话值。
include_once(目录名(目录名(文件强>))DIRECTORY_SEPARATOR.'configuration.php');
$ config = new JConfig; $ secret = $ config-> secret;
$ hash = md5(md5($ secret.netite'));
所以对你来说,name变量的值来自md5($ secret.netite'),这是会话值。如果再次使用md5,它将为您提供会话cookie值。