【问题标题】:I Have Some Problems in codeigniter with sessions我在使用会话的 codeigniter 中遇到了一些问题
【发布时间】:2018-11-22 22:53:09
【问题描述】:

我尝试检查登录他/她的帐户的人何时显示带有会话的页面,我在库中加载了会话但会话不起作用 对不起我的英语不好 感谢您的帮助:)

这就是模型

class login_model extends CI_Model
{

function __construct()
{
    parent::__construct();
}

public function check()
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $remember = $this->input->post('remember');

    $this->db->select('username','password');
    $this->db->from('user');
    $this->db->where('username',$username);
    $this->db->where('password',md5($password));

    $result = $this->db->count_all_results();

    if($result > 0)
    {
        $data_session = array(
            'username'=>$username,
            'islogin'=>true,    
        );
        $this->session->set_userdata($data_session);
        redirect('post/index');
    }

这是控制器

class Post extends CI_Controller
{
public function index()
{

    $login = $this->session->userdata('islogin');

    if($login == true)
    {
        $data = array (
            'name' => 'Hello',
        );
        $this->load->view('post/index',$data);
    }
    else {
        redirect('login/index');
    }

}
}

这是配置

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'weblogdata';
$config['sess_expiration'] = 3600;
$config['sess_save_path'] = 'tbl_ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;

$config['encryption_key'] = m.D~wt,wA:MjS9$]g<H4Z7eW.7`0vDbX$F`LUgCg+>$1?0L$vq1:7vaVf&d{U(   

【问题讨论】:

  • 提示:'islogin'=&gt;true$this-&gt;session-&gt;userdata('login');
  • 我这样做了,但还是不行
  • 警告! 切勿以明文形式存储密码!仅存储密码哈希。使用 PHP 的 password_hash()password_verify() 。如果您运行的 PHP 版本低于 5.5(我真的希望您不是),您可以使用 password_compat library 来获得相同的功能。
  • 好的,谢谢提示
  • 你能告诉我 var_dump($_SESSION) 的结果吗?

标签: php codeigniter session


【解决方案1】:

在 contruct() 上设置会话条件,将控制器更改为:

function __construct() {
parent::__construct();
        if($this->session->userdata('islogin') != true)
        {
            redirect('login/index');
        }
}

function index() {
        $data = array (
        'name' => 'Hello',
    );
    $this->load->view('post/index',$data);
}

【讨论】:

  • 那行不通:(
  • 问题是当我重定向到后控制器会话时会破坏并且不会保存在浏览器中
  • 保存在浏览器中是什么意思?在您的配置中,您曾经将会话保存在数据库中
  • 当我重定向到 post Controller 会话将破坏并且不能在 Post Controller 中使用时,我不知道如何解释
【解决方案2】:

把你的代码改成这个

class Post extends CI_Controller
{
public function index()
{

    $login = $this->session->userdata('islogin'); // $login will be 1 

    if($login)
    {
        $data = array (
            'name' => 'Hello',
        );
        $this->load->view('post/index',$data);
    }
    else {
        redirect('login/index');
    }

}
}

【讨论】:

  • 这不起作用,问题是会话没有保存在浏览器中,我不知道该怎么办
  • 您的会话存储在数据库中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2020-04-29
  • 2022-11-23
  • 2021-04-17
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多