为什么在重定向到Codeigniter中的另一个函数时Flashdata值变为空?

时间:2018-09-11 06:28:40

标签: codeigniter codeigniter-3 codeigniter-2 codeigniter-flashdata

我试图从视图获取输入值到控制器,并将该值另存为flashdata以在另一个控制器中使用。现在,我可以存储该值,直到重定向为止,但是一旦涉及到重定向,它就会丢失其值。我不确定这里发生了什么。

  • 我需要再次查看我的配置吗?如果是,那我需要看什么?
  • 我的两个功能都可以使用,但是如果我缺少任何内容?

以下是我的代码:-

Controller.php

public function first() { 
 $testing = $this->input->post('fname');
 $this->session->set_flashdata('fstname', $testing);
 $this->session->keep_flashdata('fstname');
 // echo $this->session->flashdata('fstname'); //able to get the flashdata value till here. 
 redirect('Home/second/'); //but when I am using this, flashdata loses its value
}

public function second() { 
 $data['getfname'] = $this->session->flashdata('fstname');
 $this->load->view('details', $data);
}

查看(details.php)

 <?php echo $getfname ?>

输出

config.php

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 7200; 
$config['sess_save_path'] = APPPATH . 'cache/sessions/'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE;

autoload.php

$autoload['libraries']=array();

此外,我还尝试使用userdata(),但重定向后第二个函数上没有显示它。

感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

第一:

检查发布数据是否为空

$testing = $this->input->post('fname');
var_dump($testing);
exit;

第二:

您可以跳过keep_flashdata,在这种情况下您不需要

第三:

例如检查config.php中的会话设置:

$config['sess_driver']          = 'database';
$config['sess_cookie_name']        = 'mysession';
$config['sess_expiration']         = 86400;
$config['sess_save_path']          = 'sessions';
$config['sess_match_ip']           = TRUE;
$config['sess_time_to_update']     = 300;
$config['sess_regenerate_destroy'] = TRUE;

检查autload.php$autoload['libraries'] = array('session', [...]);

第四:

直接检查会话Flash变量:

$strFstname = $this->session->flashdata('fstname');
die($strFstname);

您的代码应该可以工作,我多次使用flashdata。