Codeigniter set_flashdata返回页面不能只显示在这一台服务器上

时间:2012-02-12 01:40:20

标签: php codeigniter session cookies

好的,这是一个奇怪的。我刚刚将CodeIgniter代码移动到客户端的webhost,serverlogic.com。这段代码已经在40多个其他服务器上运行,但现在我突然遇到了问题。我正在使用数据库会话。

这不起作用:

$this->session->set_flashdata('contact_message', validation_errors());
$this->session->set_flashdata('first_name', $this->input->post('first_name'));
$this->session->set_flashdata('last_name', $this->input->post('last_name'));
$this->session->set_flashdata('email', $this->input->post('email'));
$this->session->set_flashdata('zip', $this->input->post('zip'));
$this->session->set_flashdata('phone', $this->input->post('phone'));
$this->session->set_flashdata('comments', $this->input->post('comments'));

这有效:

$this->session->set_flashdata('contact_message', validation_errors());
$this->session->set_flashdata('first_name', $this->input->post('first_name'));
$this->session->set_flashdata('last_name', $this->input->post('last_name'));
$this->session->set_flashdata('email', $this->input->post('email'));
/*$this->session->set_flashdata('zip', $this->input->post('zip'));
$this->session->set_flashdata('phone', $this->input->post('phone'));
$this->session->set_flashdata('comments', $this->input->post('comments'));*/

由于set_flashdata()方法使用cookie来跟踪数据,一旦cookie中存储了太多数据,是否会出现一些服务器限制?在调查我的服务器上的标头时,与此服务器相比,它设置了更多的cookie。

我也从他们的服务器上获取PHPSESSID cookie,但我不知道它来自哪里。我不是服务器管理员,因为他们正在使用Nginx,我完全不知道这个。

2 个答案:

答案 0 :(得分:0)

您是否尝试过评论每个set_flashdata以查看它是否是一个特定的声明?或者你是否从评论中倒退了?或者你刚刚开始使用zip?

如果您正在使用数据库会话,那么存储会话数据的表结构非常重要。我唯一能想到的是,没有为数据类型和存储的每个数据量的长度正确设置列。

可能会仔细检查表结构与您在服务器上定义的其他表。

答案 1 :(得分:0)

  

由于set_flashdata()方法使用cookie来跟踪数据,一旦cookie中存储了太多数据,是否会出现一些服务器限制?在调查我的服务器上的标头时,与此服务器相比,它设置了更多的cookie。

你刚回答了自己的问题,

正如你所说flashdata使用cookie来存储数据,事实上只有这一台服务器意味着可能有两件事。

  • 由于你的代码,这个特殊的设置正在设置更多的数据(例如,你可能没有在你的其他设置上存储特定的变量,这恰好是在边缘上倾斜)。

  • 这个服务器本身就设置了更多的cookie(nginx的可能性),nginx在你的cookie上进行某种形式的内部重写也可能是一个问题,因此域名问题阻止了cookie的正常运行,但这不太可能。

你说你得到一个页面无法显示错误,我的建议,查看服务器日志,看看是否有任何错误。接下来使用chrome开发工具或类似工具检查cookie,查看数据是否突然被切断。