您好,我已经在 Codeigniter 中创建了一个 session ,我已经在我的模型中设置了 session 变量。但是当我通过 Controller 在我的 View 中调用 session 变量时设置 session 变量值后, session 变量值变为空。有帮助吗???
更新
这是我设置 session 变量的模型
function login ($username, $password)
{
$this->db->where('username' , $username);
$this->db->where('password', $password);
$query = $this->db->get('users');
if ($query->num_rows()>0)
{
foreach ($query->result() as $rows)
{
$data = array(
'user_name' => $rows->username,
'logged_in' => TRUE,
'validated' => true
);
}
$this->session->set_userdata($data);
//$user = $rows->username;
//$this->session->set_userdata('user_name', $user);
return true;
}
else
{
return false;
}
}
这是我重定向到 View 的 Controller
public function verification()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$result = $this->site_model->login($username, $password);
//$result = $this->session->set_userdata('validated');
if ($result)
{
//$this->admin();
//$this->session->set_userdata('login_state', TRUE);
redirect ('site/index');
}
else
{
redirect ('site/login');
//$this->load->view('login');
}
}
我在 construct();
下的 Controller 中调用了 session_start();
这就是我在 View 中访问 session 变量的方式
<?php if ($this->session->userdata('user_name') != "") { ?>
.....
最佳答案
首先,在 CI 中,您不需要在任何地方使用 session_start()。 config/autoload.php 文件中只有自动加载 session 。
删除 session_start()。 尝试使用闪存数据。 Flashdata 是临时 session ,主要用于您需要将用户重定向到另一个页面并显示一些成功或错误消息的情况。
设置闪存数据: $this->session->set_flashdata('item', 'value');
获取闪存数据: $this->session->flashdata('item');
这是文档链接 http://www.codeigniter.com/user_guide/libraries/sessions.html#flashdata
关于php - Codeigniter 中的 session 变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18458958/