CodeIgniter,设置_flashdata在重定向后不工作

CodeIgniter,设置_flashdata在重定向后不工作,codeigniter,flash,session,Codeigniter,Flash,Session,set_flashdata在仅使用一个重定向的重定向后不直接工作 我在这个过程中使用了一个控制器——分析器的控制器。它处理成员确认过程,并在重定向上显示登录页面。程序如下: 此会话设置\u flashdata('主题','新成员') 重定向('登录') 路由['login']='profilers/signIn' topic=$此会话flashdata('topic') 我已经关闭了所有数据库会话配置以进行更干净的调试,即使在configs中打开了会话库,我也开始调用它,但它似乎也不起作用 这是

set_flashdata在仅使用一个重定向的重定向后不直接工作

我在这个过程中使用了一个控制器——分析器的控制器。它处理成员确认过程,并在重定向上显示登录页面。程序如下:

  • 此会话设置\u flashdata('主题','新成员')

  • 重定向('登录')

  • 路由['login']='profilers/signIn'

  • topic=$此会话flashdata('topic')

  • 我已经关闭了所有数据库会话配置以进行更干净的调试,即使在configs中打开了会话库,我也开始调用它,但它似乎也不起作用

    这是我的密码。如您所见,我正在将路径信息发送到日志文件path.log:

    在控制器探查器中,函数confirmMember:

    public function confirmMember()
      {
        //use_ssl();
        $this->form_validation->set_rules('handle', 'Unique Member Name', 'trim|xss_clean|required|min_length[5]|max_length[30]');
        $this->form_validation->set_rules('confirmation', 'Confirmation Code', 'trim|xss_clean|required|min_length[20]|max_length[20]|alpha_numeric');
    
        if ($this->form_validation->run() === FALSE) {echo "here";exit;
          $data['handle']=$this->input->post('handle');
          $data['confirmation']=$this->input->post('confirmation');
          $this->load->view('signing/defaults/header',$data);
          $this->load->view('defaults/heading',$data);
          $this->load->view('defaults/banner');
          $this->load->view('defaults/banner_right');
          $this->load->view('member/temp/index',$data);
          $this->load->view('defaults/footer',$data);
        } else {
    
          $post = $this->input->post(NULL,TRUE);
          $data['member'] = $this->Signing_model->model_confirmMember($post);
    
      if ($data['member']['confirmed']!==FALSE) {
        /* PATH CHECK */ 
        error_log("member confirmation not false\n",3, LOG_DIR.'path.log');
        unset($post);
        $this->session->sess_destroy();
        $this->session->set_flashdata('topic', 'newmember');
        // $this->session->keep_flashdata('topic');
        redirect('login','refresh');
      } else {
        /* PATH CHECK */ 
        error_log("member confirmation IS FALSE\n",3, LOG_DIR.'path.log');
        $this->load->view('member/temp/index',$data);
      }
    
    我的日志文件显示路径使用了正确的路径,并显示“成员确认非错误”

    我尝试过打开和关闭keep_flash data(我认为这不起作用,因为没有其他重定向)

    我也尝试过在没有“刷新”的情况下重定向

    在config/routes.php中:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    $route['join'] = 'profilers/joinUp';
    $route['login'] = 'profilers/signIn';
    ...
    
    日志文件显示主题已设置,但为false

    “flash变量主题为FALSE”

    “主题已设置。主题=”

    当然,没有设置主题变量,因为它是FALSE


    如您所见,我已将get flash data(获取闪存数据)功能移到控制器功能的开头,以绕过任何可能损坏数据的内容。

    您可能需要在销毁会话后再次启动会话

    在调用
    sess\u destory()
    后尝试添加此项:

    $this->session->sess\u create()


    或者,您可以避免破坏会话,并
    取消设置()
    希望删除的值。

    如果您尝试使用
    echo$this->session->flashdata('topic')对其进行调试,是否会获得任何数据;模具()confirmMember(){}
    中设置它之后(以及重定向之前),是否只有flash数据不起作用?如果您尝试使用会话变量,它是否有效?不,没有。感谢您的快速回复。在您的控制器的最顶端,顺便说一句,
    isset($topic)
    将始终为真,即使它为空。这是因为您在前面的行上创建了变量,因此它存在。如果($topic),您最好只检查
    if{
    感谢Jeemusu的帮助。这确实改变了情况,一定是问题所在。它现在显示了一些错误,我必须摸索解决。一旦我解决了这些错误,我将稍后发回。感谢Jeemusu的帮助。我还应该注意,我们发现在重定向之前在同一文件中调用flashdata可能不起作用。
    public function signIn()
    {
      $topic = $this->session->flashdata('topic');
      if (isset($topic)) {
          $message = "topic is set. topic = ".$topic."\n";
          if ($topic!==FALSE) {
                  error_log("flash var topic is not false\n", 3, LOG_DIR.'path.log');
          } else {
                  error_log("flash var topic is FALSE\n", 3, LOG_DIR.'path.log');
          }
      } else {
          $message = "topic is NOT set\n";
      }
      error_log($message,3,LOG_DIR.'path.log');
    
      exit;
      ...
      ...
    }