Php 如何在codeigniter中验证会话?

Php 如何在codeigniter中验证会话?,php,codeigniter,session,Php,Codeigniter,Session,我试图在Codeigniter中创建一个会话。我已经在自动加载中加载了会话和加密库。默认情况下,login.php页面打开。如果用户已经登录,我想打开dashboard.php页面。我已经编写了以下代码,但它会打开login.php页面,即使在登录之后也是如此 请告诉我如何检查会话是否已设置 因此,您的控制器应如下所示,以避免重定向到登录页面上的页面刷新 function index() { if ($this->session->userdata('login_status

我试图在Codeigniter中创建一个会话。我已经在自动加载中加载了
会话
加密
库。默认情况下,
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时,它仍会打开登录表单,并且不会将我重定向到仪表板。您可以在
登录
控制器的
索引
构造函数
方法上检查会话,然后重定向。