Flashdata仅显示代码运行的每个OTHER时间

时间:2011-09-23 19:51:40

标签: php function codeigniter

我对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 } ?>

1 个答案:

答案 0 :(得分:2)

来自docs:CodeIgniter支持“flashdata”,或者只能用于下一个服务器请求的会话数据,然后自动清除。

您正在设置flashdata,然后尝试在同一请求期间访问它。它在下一个请求之前是不可用的,这就是为什么它似乎只是每隔一段时间才有效。