【发布时间】:2018-03-02 13:44:40
【问题描述】:
我从昨天开始就遇到了这个问题,但我无法解决这个问题。问题是会话在本地环境中不起作用,但是当出于测试目的我将相同的文件放在实时服务器上时,它们都可以正常工作。
如果我的 config.php 文件在这里:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
这是我将数据保存在我的模型文件之一中的方法
$this->session->set_userdata('user',$result); //$result works fine, it produces
right result
在我看来,我试图通过以下方式访问它:
$this->session->userdata['user']['name']; //name here is an element in result array
我收到此错误:
严重性:通知
消息:未定义索引:用户
文件名:home/home.php
行号:2
令我惊讶的是,同样的代码在服务器上运行时没有任何错误。
另外,为了能够知道 Codeigniter 会话保存的数据,我尝试了数据库方法。
我在 config.php 文件中将代码更改为以下
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
它不是插入一行数据,而是插入四行。请看下面的数据库截图(最后四行)。
谁能指出错误?任何帮助将不胜感激。
【问题讨论】:
-
添加调试行
print_r($this->session->userdata);并查看会话中的确切内容 -
这里是输出:Array ( [__ci_last_regenerate] => 1505985569 )
-
您的本地数据库与您的生产数据库完全相同吗?这些表是相同的名称等?
-
没错,只是因为它在本地不工作,我试着把它放到网上用相同的数据库和文件验证,它在那里工作
-
尝试 print_r($this->ci->session->userdata())。还要查看浏览器是否接受来自本地域的 cookie,因为浏览器有时不接受。如果可能的话,给你的机器一个带点的主机名。
标签: php codeigniter session