Php codeigniter set_userdata在同一代码中工作,但不输出set_flashdata
我有一个用户控制器,用于检查是否登录用户。它有这段代码。我可以设置set_userdata并在我的视图中回显它,但这不适用于我的flash数据,如下所示Php codeigniter set_userdata在同一代码中工作,但不输出set_flashdata,php,session,codeigniter,Php,Session,Codeigniter,我有一个用户控制器,用于检查是否登录用户。它有这段代码。我可以设置set_userdata并在我的视图中回显它,但这不适用于我的flash数据,如下所示 public function login() { if($this->input->post('submit_login')) { // Get Posted Vars $username = $this->input->post
public function login()
{
if($this->input->post('submit_login'))
{
// Get Posted Vars
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
// Run query to return 1 result if TRUE
$query = $this->user_model->check_login($username, $password);
if ($query == FALSE)
{
$this->session->set_flashdata('flashdata', 'Incorrect Username or Password doesnt show');
$this->session->set_userdata('userdata', 'userdata works');
// Query was wrong, set flash data and redirect to login
$data['main_content'] = "user/login";
$data['title'] = "Login";
$this->load->view('template', $data);
}
else // Else Query returned 1 item
{
// Get the Variables
$user_id = $query->row(0)->id;
$username = $query->row(0)->username;
$user_email = $query->row(0)->email;
$user_type = $query->row(0)->type;
// Load up the userdata array
$userdata = array(
'logged_in' => TRUE,
'user_id' => $user_id,
'username' => $username,
'user_email' => $user_email,
'user_type' => $user_type
);
// Execute the set_userdata, to our session
$this->session->set_userdata($userdata);
$data['main_content'] = "Admin/index";
$data['title'] = "Administrator";
$this->load->view('template', $data);
}
}
elseif ($this->session->userdata('logged_in') == TRUE)
{
$this->index();
}
else
{
$data['main_content'] = "user/login";
$data['title'] = "Login";
$this->load->view('template', $data);
}
那么在我看来,
<form action="<?php echo base_url(); ?>user/login" method="POST" id="login_form"/>
<p>Please Login Below</p>
<span class="notice"><?php echo $this->session->flashdata('flashdata'); ?></span>
<span class="label">Username:</span><input type="text" name="username"/><br/>
<span class="label">Password:</span><input type="password" name="password"/><br/>
<input type="submit" name="submit_login" value="Login"/>
</form>
<?php echo $this->session->flashdata('flashdata'); ?>
<br/>
<?php echo $this->session->userdata('userdata'); ?>
codeigniter中的flashdata仅在会话中存在一个附加请求,然后被销毁。如果您无意中试图通过单个请求使用它,那么在您尝试访问它时,它将不存在<代码>用户数据尽管存在,只要会话存在 更新 在查看了更多的代码之后,似乎发生了这种情况,因为您实际上并没有在此处重定向(创建下一个请求),您只是加载了一个视图
if ($query == FALSE)
{
$this->session->set_flashdata('flashdata', 'Incorrect Username or Password doesnt show');
$this->session->set_userdata('userdata', 'userdata works');
// Query was wrong, set flash data and redirect to login
$data['main_content'] = "user/login";
$data['title'] = "Login";
$this->load->view('template', $data); //<---- See?
}
codeigniter中的
flashdata
仅在会话中存在一个附加请求,然后被销毁。如果您无意中试图通过单个请求使用它,那么在您尝试访问它时,它将不存在<代码>用户数据尽管存在,只要会话存在
更新
在查看了更多的代码之后,似乎发生了这种情况,因为您实际上并没有在此处重定向(创建下一个请求),您只是加载了一个视图
if ($query == FALSE)
{
$this->session->set_flashdata('flashdata', 'Incorrect Username or Password doesnt show');
$this->session->set_userdata('userdata', 'userdata works');
// Query was wrong, set flash data and redirect to login
$data['main_content'] = "user/login";
$data['title'] = "Login";
$this->load->view('template', $data); //<---- See?
}
价值:
echo $this->session->flashdata('flashdata');
将在第二次刷新页面时获取
实际上,此值存储在cookies中。以下值:
echo $this->session->flashdata('flashdata');
将在第二次刷新页面时获取
实际上,该值存储在cookies中。我理解,但它不会在第一次请求时显示。我添加了更多代码。谢谢!成功了!,我知道,我只是加载了一个与请求相同的视图。但是我必须为下一个请求重定向。我理解这一点,但在第一个请求中没有显示。我添加了更多代码。谢谢!成功了!,我知道,我只是加载了一个与请求相同的视图。但我必须重定向到下一个请求。