我正在运行的项目中遇到与会话相关的问题。所以我想用一个简单的代码来获取新的副本并检查会话。所以我下载了Codeigniter 2.1.3的新副本,并在自动加载中添加了会话库。我还在配置文件中设置了5位加密密钥。然后我在welcome控制器中创建了以下两个方法:
public function gettingSess() {
echo '<pre>';
print_r($this->session->all_userdata());
echo '</pre>';
exit;
}
public function settingSess() {
$arr = array('start' => '456');
for($i=0;$i <= 999;$i++) {
$arr['lets_test' . $i] = $i * 100;
}
$this->session->set_userdata('sessVar', $arr);
echo '<pre>';
print_r($this->session->all_userdata());
echo '</pre>';
exit;
}
然后我首先运行http://mydomain.com/ci/index.php/welcome/settingSess,其输出如下,这是完美的:
Array (
[session_id] => dd0a684ab53e937309ee9fdbcf24468f
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
[last_activity] => 1371458835
[user_data] =>
[sessVar] => Array
(
[start] => 456
[lets_test0] => 0
[lets_test1] => 100
.
.
[lets_test999] => 99900
)
)
然后我运行http://mydomain.com/ci/index.php/welcome/gettingSess,其输出如下:
Array(
[session_id] => dd0a684ab53e937309ee9fdbcf24468f
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
[last_activity] => 1371458835
[user_data] =>
)
请告诉我我做错了什么,问题是什么,为什么我没有在gettingSess方法中获取会话变量。
感谢。
答案 0 :(得分:0)
我不完全确定这是否会有所帮助,但是,我遇到了与会话相关的问题以及跨多个文件运行会话。我不得不联系hostprovider并要求他们运行特定的代码: 您可能想要检查此线程: PHP File Cannot Recover Session Variable Across Pages
答案 1 :(得分:0)
可能是您的会话设置不正确。所以你创建一个函数然后设置你的会话然后得到会话。 尝试下面的代码
public function demo()
{
$this->settingSess();
$this->gettingSess();
}
并在你的getsSess()函数中添加如下所示的行
public function gettingSess()
{
print_r($this->session->all_userdata());
echo $this->session->userdata('sessVar');
exit;
}
答案 2 :(得分:0)
试试这个:
$this->session->set_userdata($arr);
set_userdata
只接受两个元素,如果它们是'key','value'类型 - 其中第二个元素必须是一个字符串(没有数组),例如$this->session->set_userdata('some_name', 'some_value');
- 请参阅the manual。
答案 3 :(得分:0)
设置$config['cookie_secure'] = FALSE;
在config / autoload.php中。
如果设置为true,则仅在存在安全连接时才设置cookie,即当网站在HTTPS上运行时。
会话数据存储在用户的cookie中。 Cookie只能容纳4KB的数据,因此请注意不要超过容量。尝试设置单个会话值
$this->session->set_userdata('some_name', 'some_value');