【发布时间】:2010-10-01 07:57:38
【问题描述】:
我正在尝试在 Codeigniter 中使用原生 $_SESSION 数组,因为我不能使用 $_COOKIES 数组, 所以我创建了自己的课程,但似乎 Codeigniter 继续在 cokkies 上保存数据,因为如果我禁用浏览器 cookie,我将无法检索 $_SESSION 数据:O!不可思议....我不明白为什么? codeigniter 是否停止或删除所有设置的 $_SESSION 数据?
是否有人仍然只使用 $_SESSION 数组,放弃默认的 $_COOKIE 数组选项?我的意思是,我想要会话数据而不是 cookie 数据,但这似乎是不可能的:O!!!??!!
我已将 CI 原始 Session.php 库重命名为 Cookie.php,然后我将两个个人类放入应用程序/库中,并默认将它们加载到 autoloader.php 中
1) 个人库 - Session.php
session_start();
class Session {
function set_data($key,$data)
{
if(!$key)
{ echo 'first param passed is null in session set_data';}
if(!$data)
{ echo 'second param passed is null in session set_data';}
if(isset($key) && isset($data))
{
if(isset($_SESSION[$key]))
{
unset($_SESSION[$key]);
}
return $_SESSION[$key] = $data;
}
function keep_data($key)
{
if(!$key)
{ echo 'first param passed is null in session keep_data';}
if(isset($_SESSION[$key]))
{
return htmlentities($_SESSION[$key]);
}
}
2) 个人库 - Settings.php
class Settings {
function setsitelanguage()
{
$CI =& get_instance();
if($CI->session->keep_data('lang'))
{
$CI->config->config['language'] = $CI->session->keep_data('lang');
}
else
{
$CI->config->config['language'] = "en";
}
}
比我有 2 个控制器
1) 控制器主页.php
class Home extends Controller {
function Home()
{
parent::Controller();
$this->settings->setsitelanguage();
}
function index()
{
$this->load->view('home/home_view');
}
function session()
{
echo $this->session->keep_data('lang');
}
}
2) 控制器 Auth.php
class Auth extends Controller {
function usersetlang()
{
$lang = $this->uri->segment(3);
return $this->session->set_data('lang',$lang);
}
}
如http://mysite/index.php/home/session 所示,我可以通过 auth.php 检索与 session.php 一起存储的语言站点
唯一的问题是使用全局$_SESSION[] 是不够的,因为如果我尝试检索数据禁用我的浏览器cookie $_SESSION[] 数据不会出现!!!
【问题讨论】:
-
我在本地主机的 xampp 上使用 CI,你的意思是什么?对不起,我的英语很糟糕:/
标签: php session codeigniter cookies