我尝试使用$this->session->set_flashdata('success')
并且在重定向到另一个功能后它无法正常工作。这是我的代码:
<?php
class Home extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->helper(array('url','form');
$this->load->library(array('session','template','form_validation');
}
}
/* My another function for form_validation and etc */
public function login(){
$this->set_login_rules();
if($this->form_validation->run()){
/* inserting data to database */
$this->session->set_flashdata('welcome');
redirect('home/welcome');
}
$this->template->display('home');
}
public function welcome(){
if($this->session->flashdata('welcome') !== FALSE){
echo "<script>alert('Flashdata Success! Welcome!</script>";
}
else{
echo "<script>alert('Flashdata Failed! Go Away!');</script>";
}
}
当我运行该程序时,它显示警告Flashdata Failed! Go Away!
但是我要插入数据库的登录数据被添加到表中。
还有一件事,有时flashdata
正在发挥作用。如果显示Flashdata Failed! Go Away!
,则从10次尝试,8-9次尝试。
任何人都可以告诉我为什么会这样吗?我该如何解决它?
答案 0 :(得分:1)
你实际上需要给它一些价值,所以:
$this->session->set_flashdata('welcome');
应该是:
$this->session->set_flashdata('welcome', true);
或者您可以使用完整的消息,例如:
$this->session->set_flashdata('welcome', 'Successfully logged in');
等...
在此处查看有关flashdata的更多信息:https://ellislab.com/codeigniter/user-guide/libraries/sessions.html
答案 1 :(得分:0)
来自Codeigniter文档:
CodeIgniter supports "flashdata", or session data that will only be available for the next server request, and are then automatically cleared.
您的问题可能是,当您重定向时,该过程需要多个请求,清除您的flash数据。
使用常规会话或查询参数。