gpt4 book ai didi

php - 为什么每当我刷新页面时,都会创建新的 CI session ?

转载 作者:行者123 更新时间:2023-12-03 09:00:06 24 4
gpt4 key购买 nike

我创建了一个简单的登录系统,并使用 CI Sessions 来保存一些值。
但是 CI session 没有按预期工作,它没有检索任何值。
我试图跟踪问题,我想出了一些东西:
每当我刷新页面时,都会创建一个新 session !
并且只有 1 个 session 包含我的自定义变量( is_loggedusername )。
其他 session 只保存默认数据。
我尝试将 session 保存在数据库中,但仍然是同样的问题。
是我的加密 key 吗?
我只是用了一堆随机字母,因为我不能让它空着。
这是我测试 session 的 Controller 。
笔记:
我正在使用一些 echo在这里,只是为了测试。
笔记2:
只有当我在同一页面上调用它时,我才能检索 session 变量。

 <?php

class site extends CI_Controller {

function index() {
if (!$this->session->userdata('is_logged')) {
$data['main_content'] = 'site_view';
$this->load->view('template/all_templates', $data);
} else {
echo 'you\'re logged already';
}
}

function login() {
if (!$this->session->userdata('is_logged')) {
$username = $this->input->post('username');
$password = $this->input->post('password');
if ($username && $password) {
if ($this->site_model->validate($username, $password)) {
$user_data = array('username' => $username, 'is_logged' => TRUE);
$this->session->set_userdata($user_data);
echo 'you successfully log in.';
redirect('site/index', 'refresh');
} else {
echo 'cannot login';
}
} else {
echo 'username and/or password not set';
}
} else {
echo 'you\'re logged in already!';
}
}
}
?>

笔记:
这个问题与这个有关

编辑1:
我登录了几次,有时没有错误。
几次刷新/登录后,查看 session 数据库:
02d6e3521046ffe7df36b07e88624a60    127.0.0.1   Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K  1323803371  
66a9cf3d6b7e0521dcc7e5bd3d5d4ad1 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803380
923a78db029ee3e3ae4bf9e09873fcae 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803366 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}
99ac075792b7818aadac60d00ca46947 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803367
bbe10f3338226c8d83b0ae58d1ca5149 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803343 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}
ed6a22ae1d2fd21b6ef66668c2078a11 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803375
feb5806176dc8a4f7ed8f30763f65f8b 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803380 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}

您可能会注意到,一些结果与用户数据有关。

我的验证功能:
function validate($username, $password) {

$this->db->where('username', $username);
$this->db->where('password', $password);
$query = $this->db->get('users');
if ($query->num_rows() == 1) {
return true;
} else {
return false;
}
}

笔记:
我在 FF 和 Chrome 中进行了测试。

最佳答案

Aziz 几个月前,我在使用原始 CI session 库(包括您提到的内容)时遇到了很多麻烦。最后我找到了这个使用 native PHP session 的替代品.有用!
相信我,在一个项目的中间,我并没有停下来想知道为什么。只是工作。

这里是:Codeigniter's Native session (底部有下载链接)

但是,由于它是一个旧图书馆,您必须进行一些黑客攻击。您可以在 library's forum 中查看这些简单的技巧。

只需将此文件放在 codeigniter 的库目录中即可。之后让我们谈谈前向兼容性,我是认真的! :)

关于php - 为什么每当我刷新页面时,都会创建新的 CI session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8494236/

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