好的,这是一个奇怪的。我刚刚将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,我完全不知道这个。
答案 0 :(得分:0)
您是否尝试过评论每个set_flashdata以查看它是否是一个特定的声明?或者你是否从评论中倒退了?或者你刚刚开始使用zip?
如果您正在使用数据库会话,那么存储会话数据的表结构非常重要。我唯一能想到的是,没有为数据类型和存储的每个数据量的长度正确设置列。
可能会仔细检查表结构与您在服务器上定义的其他表。
答案 1 :(得分:0)
由于set_flashdata()方法使用cookie来跟踪数据,一旦cookie中存储了太多数据,是否会出现一些服务器限制?在调查我的服务器上的标头时,与此服务器相比,它设置了更多的cookie。
你刚回答了自己的问题,
正如你所说flashdata使用cookie来存储数据,事实上只有这一台服务器意味着可能有两件事。
由于你的代码,这个特殊的设置正在设置更多的数据(例如,你可能没有在你的其他设置上存储特定的变量,这恰好是在边缘上倾斜)。
这个服务器本身就设置了更多的cookie(nginx的可能性),nginx在你的cookie上进行某种形式的内部重写也可能是一个问题,因此域名问题阻止了cookie的正常运行,但这不太可能。
你说你得到一个页面无法显示错误,我的建议,查看服务器日志,看看是否有任何错误。接下来使用chrome开发工具或类似工具检查cookie,查看数据是否突然被切断。