Php 如何在codeigniter中验证会话?
我试图在Codeigniter中创建一个会话。我已经在自动加载中加载了Php 如何在codeigniter中验证会话?,php,codeigniter,session,Php,Codeigniter,Session,我试图在Codeigniter中创建一个会话。我已经在自动加载中加载了会话和加密库。默认情况下,login.php页面打开。如果用户已经登录,我想打开dashboard.php页面。我已经编写了以下代码,但它会打开login.php页面,即使在登录之后也是如此 请告诉我如何检查会话是否已设置 因此,您的控制器应如下所示,以避免重定向到登录页面上的页面刷新 function index() { if ($this->session->userdata('login_status
会话
和加密
库。默认情况下,login.php
页面打开。如果用户已经登录,我想打开dashboard.php
页面。我已经编写了以下代码,但它会打开login.php页面,即使在登录之后也是如此
请告诉我如何检查会话是否已设置
因此,您的控制器应如下所示,以避免重定向到登录页面上的页面刷新
function index() {
if ($this->session->userdata('login_status')) {
//write your code for redirect to dashboard
} else {
$data['products_data'] = $this->products_model->all_products();
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == false) {
$this->load->view('login');
} else {
$username = $this->input->post('username');
$password = $this->input->post('password');
if ($this->products_model->login_model($username, $password)) {
$sess_data = array(
'username' => $username,
'login_status' => '1'
);
$session_data = $this->session->set_userdata($sess_data);
//write your code for redirect to dashboard
}
}
}
}
因此,您的控制器应如下所示,以避免重定向到登录页面上的页面刷新
function index() {
if ($this->session->userdata('login_status')) {
//write your code for redirect to dashboard
} else {
$data['products_data'] = $this->products_model->all_products();
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == false) {
$this->load->view('login');
} else {
$username = $this->input->post('username');
$password = $this->input->post('password');
if ($this->products_model->login_model($username, $password)) {
$sess_data = array(
'username' => $username,
'login_status' => '1'
);
$session_data = $this->session->set_userdata($sess_data);
//write your code for redirect to dashboard
}
}
}
}
我更喜欢为dashboard创建另一个控制器,并在成功登录后将其重定向到那里。它是干净的,你可以做进一步的改变很容易
if( $this->products_model->login_model($username,$password))
{
$sess_data= array(
'username'=> $username
);
$session_data = $this->session->set_userdata($sess_data);
if(isset($session_data))
redirect(site_url('/dashboard/'));
}
FM:$sess_数据不应该用单引号括起来我更喜欢为仪表板创建另一个控制器,并在成功登录后将其重定向到那里。它是干净的,你可以做进一步的改变很容易
if( $this->products_model->login_model($username,$password))
{
$sess_data= array(
'username'=> $username
);
$session_data = $this->session->set_userdata($sess_data);
if(isset($session_data))
redirect(site_url('/dashboard/'));
}
FM:$sess_数据不应以单引号括起我将使用会话记录登录状态
$session_data= array(
'username'=> $username,
'lgoin_status' => 1
);
$this->session->set_userdata('$session_data');
我将检查会话的login\u状态
if ($this->session->userdata('login_status')) {
// do something
}
编辑
在代码中,首先应该检查会话,因此
public function index()
{
if ($this->session->userdata('login_status'))
{
// do something
}
else
{
$data['products_data']= $this->products_model->all_products();
$this->form_validation->set_rules('username','Username','required');
$this->form_validation->set_rules('password','Password','required');
if ($this->form_validation->run()== false)
{
$this->load->view('login');
}
...
}
我将使用会话记录登录状态
$session_data= array(
'username'=> $username,
'lgoin_status' => 1
);
$this->session->set_userdata('$session_data');
我将检查会话的login\u状态
if ($this->session->userdata('login_status')) {
// do something
}
编辑
在代码中,首先应该检查会话,因此
public function index()
{
if ($this->session->userdata('login_status'))
{
// do something
}
else
{
$data['products_data']= $this->products_model->all_products();
$this->form_validation->set_rules('username','Username','required');
$this->form_validation->set_rules('password','Password','required');
if ($this->form_validation->run()== false)
{
$this->load->view('login');
}
...
}
卸下上的单个qoutes
$this->session->set_userdata(“$sess_data”)代码>
它将变量$sess_data
视为常规字符串
必须是:
$this->session->set_userdata($sess_data)代码>删除上的单个QOUTE
$this->session->set_userdata(“$sess_data”)代码>
它将变量$sess_data
视为常规字符串
必须是:
$this->session->set_userdata($sess_data)代码>我已更新了代码。仍然在登录之后,当我刷新页面时,它会将我发送回login.php..现在在登录之后,它会打开一个空白页面。请检查一下。谢谢if($this->products\u model->login\u model($username,$password)){}否则{//您的登录码}
。检查您的条件是否正确。如果为true,则只检查会话验证。@AftabAamir代码中的其他部分不是为isset($sessdata)
编写的。它是为您的login\u model()
@aftabamir编写的,只需在if($this->products\u model->login\u model($username,$password)){}中回显一个示例文本,然后尝试打印还是重定向到登录表单。若它重定向到登录页面,那个么($this->products\u model->login\u model($username,$password))条件为false。如果($this->session->userdata('login\u status'),则不会condition@AftabAamir检查更新的答案,你就会明白为什么你的页面会被重定向到登录页面上的页面刷新。我已经更新了我的代码。仍然在登录之后,当我刷新页面时,它会将我发送回login.php..现在在登录之后,它会打开一个空白页面。请检查一下。谢谢if($this->products\u model->login\u model($username,$password)){}否则{//您的登录码}
。检查您的条件是否正确。如果为true,则只检查会话验证。@AftabAamir代码中的其他部分不是为isset($sessdata)
编写的。它是为您的login\u model()
@aftabamir编写的,只需在if($this->products\u model->login\u model($username,$password)){}中回显一个示例文本,然后尝试打印还是重定向到登录表单。若它重定向到登录页面,那个么($this->products\u model->login\u model($username,$password))条件为false。如果($this->session->userdata('login\u status'),则不会condition@AftabAamir检查更新后的答案,您将了解为什么页面在页面刷新时重定向到登录页面。如果我使用重定向,那么如何加载页眉和页脚视图?在仪表板控制器的索引函数$this->load->view('header')中编写以下代码$此->加载->查看(“仪表板”)$此->加载->查看('footer');因此,当您在那里着陆时,页眉和dashbaord和页脚将被加载如果我使用重定向,那么如何加载页眉和页脚视图?在仪表板控制器的索引函数$this->load->view('header')中编写以下代码$此->加载->查看(“仪表板”)$此->加载->查看('footer');所以当你登陆那里时,页眉、dashbaord和页脚将被加载谢谢,我已经更新了我的代码,现在它成功登录并打开dashboard.php,但是当我再次访问login.php时,它打开了登录表单,并且没有将我重定向到dashboard.php。谢谢,我已经更新了我的代码,现在它成功登录并打开了dashboard.php,但是当我再次访问login.php时,它仍然会打开登录表单,并且不会将我重定向到仪表板。谢谢,我已经更新了我的代码,现在它成功登录并打开了dashboard.php,但是当我再次访问login.php时,它仍然会打开登录表单,并且不会将我重定向到仪表板。您可以在登录
控制器的索引
或构造函数
方法上检查会话并重定向。谢谢,我已经更新了我的代码,现在它已成功登录并打开dashboard.php,但当我重新访问login.php时,它仍会打开登录表单,并且不会将我重定向到仪表板。您可以在登录
控制器的索引
或构造函数
方法上检查会话,然后重定向。