会话flashdata不适用于表单提交

时间:2016-03-23 01:33:22

标签: php codeigniter

我正在使用ion-auth“库”进行codeigniter(https://github.com/benedmunds/CodeIgniter-Ion-Auth),我遇到了flashdata的问题。这是代码的一部分:

public function reset_password($code = NULL)
{
    if (!$code)show_404();
    $this->user = $this->ion_auth->forgotten_password_check($code);
    if ($this->user)
    {
        //setting the rules
        if ($this->form_validation->run() == false)
        {
            //more code
            $this->_get_csrf_nonce();
            /*
              One of the things this function (_get_csrf_nonce) makes is:
              $this->session->set_flashdata('csrfkey', $key);
              $this->session->set_flashdata('csrfvalue', $value); 
            */
            //The next thing is load the view with the form
        }
        else //form is running
        {
            echo "flashdata csrfkeyvalue: ".$this->session->flashdata('csrfvalue')."<br>";
            die;
            //more code, but not important by the moment
        }
    }
}

好吧,当表单被提交时,$ this-&gt; session-&gt; flashdata('csrfvalue')的回声不会显示任何内容。
如果我做了类似的事情:

private function _get_csrf_nonce(){
    /*$this->load->helper('string');
    $key   = random_string('alnum', 8);
    $value = random_string('alnum', 20);
    $this->session->set_flashdata('csrfkey', $key);*/
    $this->session->set_flashdata('csrfvalue', $value);
    redirect(base_url("auth/test"));
    //return array($key => $value);
}
public function test()
{
    echo "flashdata csrfkeyvalue: ".$this->session->flashdata('csrfvalue')."<br>";
}

在这种情况下......它有效。我在表单中使用的视图与此非常相似:https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/views/auth/reset_password.php

感谢。

1 个答案:

答案 0 :(得分:0)

经过一段时间的战斗后,我正在寻找能够在表格视图加载和表单被提交之间发出新请求的东西......最后,我发现(我不记得)一个javascript是请求虽然是一个控制器(根据本教程翻译一些文本:http://www.student.kuleuven.be/~r0304874/blog/international-javascript-files-in-codeigniter.html)。我是这样装的:

<script src="<?=site_url('jsloader/login.js');?>" type="text/javascript"></script>

感谢。