我对CodeIgniter比较新,所以我不确定这是不是编码错误,或者我是如何使用CodeIgniter的flash数据的问题。对于上下文:用户以简单的HTML表单提交短语。将该短语与应输入的内容进行比较(非常简单,对吧?)。这个正确的短语会根据他们所处活动的步骤而变化。当他们得到错误的文本时,我试图使用flashdata来显示错误消息。以下是控制器部分,后面是视图:
//Get step number
$step = $this->input->post('step');
$correct_text = array(
1 => 'TESTPHRASE',...
...
//If user enters the correct text
$entered_text = strtoupper($this->input->post('entered_text'));
if ($entered_text == $correct_text[$step])
{
...
}
//If user enters the incorrect text
else
{
$data['step'] = $step;
$this->session->set_flashdata('entry_error', '<b>Sorry!</b>Your entry was incorrect. Be sure to carefully read the instructions!');
$this->load->view('template', $data);
}
以下是仅每其他时间运行的视图。
<?php
if ($this->session->flashdata('entry_error'))
{ ?>
<div id="game_error">
<?php echo $this->session->flashdata('entry_error'); ?>
</div>
<?php } ?>
答案 0 :(得分:2)
来自docs:CodeIgniter支持“flashdata”,或者只能用于下一个服务器请求的会话数据,然后自动清除。
您正在设置flashdata,然后尝试在同一请求期间访问它。它在下一个请求之前是不可用的,这就是为什么它似乎只是每隔一段时间才有效。