gpt4 book ai didi

php - 在 CodeIgniter 3.1.2 中重定向后 session 数据丢失

转载 作者:可可西里 更新时间:2023-10-31 23:58:09 25 4
gpt4 key购买 nike

我有一个 CodeIgniter 应用程序仍在开发中,但我意识到当我登录并在 session 中设置用户数据时,它已设置但在重定向后消失了。因此,我无法在重定向后访问 session 数据。

这是我的登录脚本

public function login(){

if(!empty($_SESSION['user_id'])){//Meaning you are logged in
//We inform you
$this->session->set_flashdata('msg', "<div class='alert alert-success'><span class=''></span> You are already logged in as <strong>".$this->session->user_name."</strong></div>");

//And send you back to your dashboard
return redirect('/account/dashboard');
}

if($this->input->post()){
$this->load->library('form_validation');
$this->form_validation->set_rules('email','Email','required|valid_email');
$this->form_validation->set_rules('password','Password','required');

if($this->form_validation->run() == TRUE){

$creds=['email'=>$this->input->post('email'),'password'=>$this->input->post('password')];
$this->load->model('user/user_model');

$user=$this->user_model->login($creds);

if(!$user){
$data['error_msg']="Inavlid login details. Please retry";
}else{

$user->user_type=(!empty($user->user_type))?:'2';

$userdata=['user_id'=>$user->id,'user_name'=>$user->name,'user_email'=>$user->email,'user_type'=>$user->user_type];

$this->session->set_userdata($userdata);
$this->session->set_flashdata('msg', '<div class="alert alert-success"><span class="fa fa-check"></span> Logged in as '.$this->session->userdata('user_name').'</div>');

return redirect('account/dashboard');
}

}
}

$data['title']="Login";
$this->load->view('template/auth/header');
$this->load->view('account/login',$data);
$this->load->view('template/auth/footer');

}

这是我的 config/congig.php 文件

$config['base_url'] = 'http://localhost/tmpad/';

$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';

$config['encryption_key'] = '4%^&*9799809-nkhdfioup';

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix'] = '';
$config['cookie_domain'] = 'http://localhost/tmpad/';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

session 在 config/autoload.php 中自动加载

我将不胜感激任何指导或帮助。谢谢

最佳答案

我不确定到底是什么问题。最近我也遇到了这个..

以前在我运行 php7.0 的开发中它是有效的。

目前它只在我运行 nginx 和 php 5.6 的生产服务器上工作。我的开发服务器似乎不工作,并继续在 session 表中重新生成新行。我的开发服务器使用的是php7.1,homestead virtualbox开发环境,通常用于Laravel项目。

通过采取这一步,我设法克服了这个问题。

1) 进入system/libraries/Session/Session.php

2) 通过添加//注释 session_start()。我们想重新定位 sessionn_start()。

3) 到第 315 行说 Security is king,注释掉直到第 351 行

enter image description here

4) 然后转到您的主 index.php(根 index.php)

5) 在顶部添加一次session_start()。

enter image description here

6) 好的,再试一次。希望它有效。我的猜测是它不适用于 php 7.1,需要在此 Session.php 文件中进行一些更新。

我的 CI 版本是 3.1.1

enter image description here

关于php - 在 CodeIgniter 3.1.2 中重定向后 session 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41210489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com