所以问题是,在设置任何值时,PHP中的会话是否可能是自动启动的,因为我读到你需要调用session_start()
并且在我当前的代码中我需要#39} ;我没有在任何地方这样做,所以我不确定它是否真的有必要。
有关我的环境的一些信息:
XAMPP for Linux 5.6.8 / Ubuntu 14
我使用的是Codeigniter Framework 3.0.2和PHP 5.6.8版。
是的,我检查了php.ini文件,我找不到任何session.start_auto,所以我真的很困惑。
我的登录页面代码如下:
if ($this->login_model->authenticate($data))
{
#start session, save necessary data
$this->load->model('user_model');
$user = $this->user_model->get_user_by_email($data['email']);
$_SESSION['user_id'] = $user->user_id;
$_SESSION['user_email'] = $user->email;
$_SESSION['user_authenticated'] = TRUE;
$this->load->helper('url');
redirect('principal');
}
然后在每个页面中我调用一个帮助方法,检查用户是否以这种方式进行身份验证:
public function user_is_authenticated()
{
if (!isset($_SESSION['user_authenticated']) || !$_SESSION['user_authenticated'] === TRUE)
{
redirect('login');
}
}
最后,我的注销页面会这样做:
public function end_session()
{
if (session_destroy())
{
redirect('login');
}
}
问题是它工作正常,因为如果我没有登录,我就无法访问具有该验证方法的页面。所以,我从未使用session_start()
。我是不是该?在哪里?
提前致谢
答案 0 :(得分:0)
在codeigniter中,您不需要使用session_start()。只需在config文件夹
中的autoload.php文件中自动加载会话库$autoload['libraries'] = array('session');
更多阅读本教程
http://w3code.in/2015/10/session-handling-in-codeigniter/
或者您可以使用原生会话进行本地会话阅读
http://w3code.in/2015/10/how-to-use-native-php-session-in-codeigniter/
答案 1 :(得分:0)
我应该吗?
没有。您不必使用session_start()
。
<强>为什么吗
Codeigniter使用set_userdata
方法设置Session。
会话通常会在每次页面加载时全局运行,因此Session类应该在控制器构造函数中初始化,或者可以由系统自动加载。在大多数情况下,会话类将在后台无人值守运行,因此只需初始化类将使其在必要时读取,创建和更新会话。
还有其他事情要做吗?
是。您必须在autoload.php
如何使用set_userdata
?
$newdata = array(
'user_id' => $user->user_id,
'user_email' => $user->email,
'user_authenticated' => TRUE
);
$this->session->set_userdata($newdata)
如何设置会话设置?
$user_id = $this->session->userdata('user_id');
if (isset($user_id)) {
echo $name;
}
else
{
echo "Not set";
}
那里有任何额外的资源吗?
答案 2 :(得分:0)
似乎会话正在使用缓存,你可以在页面顶部转储sessionid @并确保它返回空。此外,我会尝试在浏览器的隐身模式下删除缓存的歧义
var_dump (session_id())
答案 3 :(得分:0)
在codeigniter中,无需使用session_start()
。
只需使用
$this->session->set_userdata();// to set the session values.
和
$this->session->userdata();// to retreive the session values.
请查看here了解详情。