首先,我是codeigniter的新手。我想问的是,为什么每次刷新我的会话数据都会丢失。我重定向到登录。
这是我的密码。
登录控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->helper('form');
$this->load->view('login');
}
}
?>
验证蛋白
function index() {
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE) {
//Field validation failed. User redirected to login page
//$this->load->view('headerx');
//redirect('login', 'refresh');
$this->load->view('login');
}
else {
//Go to private area
redirect('home');
}
}
function check_database($password) {
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
//query the database
$result = $this->user->login($username, $password);
if($result) {
$sess_array = array();
foreach($result as $row) {
$sess_array = array(
'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
else {
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
}
}
?>
家庭控制器
function index()
{
if($this->session->userdata('logged_in')) {
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('home', $data);
}
else {
//If no session, redirect to login page
// print_r($this->session->all_userdata());
//die();
redirect('login');
}
}
第一次登录是成功的,但当我刷新(f5)时,它又回到了登录表单。我认为这是因为会议失败了。谢谢你的帮助。。。
编辑并解决:
很抱歉给您带来不便,出现此问题是因为
<script>
function goOut(){
<?php $this->session->unset_userdata('logged_in');?>
window.location="<?php echo base_url()?>";
}
</script>
我的目的是当点击按钮注销时,会话将被取消设置,但如果我在标题中输入,会话将再次丢失,所以我会找到另一种方法。感谢您的关心和帮助。
我会尝试在数据库中使用CodeIgniter的会话。我过去在CI方面遇到过这种问题。当您在cookie中设置大量数据(大于4KB)时,通常会发生这种情况。
如果不能选择基于数据库的会话,请告诉我。
请参阅此处了解更多信息:CodeIgniter会话请参阅标题"将会话数据保存到数据库"
如果您在windows上,则windows 10上的Codeigniter、PHP 7和Apache存在问题。我有一个客户想要在自己的笔记本电脑上安装分期应用程序,而这只发生在他们的新笔记本电脑上。
因此,经过数小时的测试,我们卸载了XAMPP 7.1.4,并用5.6.XX版本重新安装了XAMPP。这就修复了它。然而,在运行Nginx和PHP 7的Linux盒子上没有问题。只有Windows 10。
不管怎样,我希望这能有所帮助!我花了几个小时才找到解决办法。