如果我将url更改为登录名(即使已经登录),php codeigneter上的profile页面仍会移动到登录名页面

如果我将url更改为登录名(即使已经登录),php codeigneter上的profile页面仍会移动到登录名页面,php,codeigniter,session,login-script,Php,Codeigniter,Session,Login Script,我有一个问题,我有登录页面,如果我们输入正确的电子邮件和密码,它将直接指向配置文件,但问题是当我将url更改为登录时,它仍然会移动到登录页面,如果我已经登录了,我如何阻止登录页面,这样它将直接指向配置文件,尽管我更改为登录页面的url仍然直接指向配置文件页面 代码如下: } 这是用户数据(“已登录”) 最佳实践 始终单独创建用户/登录控制器,您将有更多空间来创建诸如用户角色检查和将用户重定向到其特定于角色的仪表板/配置文件等功能 在父控制器中保留登录/注销检查功能,并从该控制器扩展控制器。例如,

我有一个问题,我有登录页面,如果我们输入正确的电子邮件和密码,它将直接指向配置文件,但问题是当我将url更改为登录时,它仍然会移动到登录页面,如果我已经登录了,我如何阻止登录页面,这样它将直接指向配置文件,尽管我更改为登录页面的url仍然直接指向配置文件页面

代码如下:

}

这是用户数据(“已登录”)


最佳实践

始终单独创建用户/登录控制器,您将有更多空间来创建诸如用户角色检查和将用户重定向到其特定于角色的仪表板/配置文件等功能

在父控制器中保留登录/注销检查功能,并从该控制器扩展控制器。例如,创建一个名为My_controller的控制器,并将isLoggedin检查和注销功能放在其中

class My_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
    }
    public function isLoggedIn()
    {
        if(!empty($this->session->userdata['id'])&& $this->session->userdata['type']=='admin')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public function logout()
    {
        $this->session->sess_destroy();
        redirect(base_url());
    }
}
然后创建用户或登录控制器以呈现登录页面并实现登录功能

class Login extends My_Controller
{
 public function __construct()
 {
   parent::__construct();
   $this->load->model('user_model');
   $this->load->library("security");
 }

 public function index()
 {
   if(!$this->isLoggedin()) // if the user is not logged in render login screen
   {
    if($_POST) // or if($this->input->post)
    {
     $data=$this->security->xss_clean($_POST);
     $user=$this->user_model->checkUser($data);
     if(!empty($user))
     {
       $this->session->set_userdata($user);
       redirect(base_url().'profile');
     }
     else
     {
       $data['errors']='Wrong Credentials';
       $this->load->view('login',$data);
     }
   }
   else
   {
     $this->load->view('login');
   }
  }
  else // but if the user is logged in , take him to profile. 
  {
   redirect(base_url().'profile');
  }
}
在你的个人资料控制器中

class Profile extends My_Controller
{
 public function __construct()
 {
  parent::__construct();
  $this->load->model('user_model');
 }

 public function index()
 {
  // if user is not logged in , redirect him back to login screen. 
  if(!$this->isLoggedin()){ redirect(base_url().'login');}
  $userId=$this->session->userdata['id']; // this index depends on the field name
  $data['user']=$this->user_model->getUserDataById($userId);
  $this->load->view('profile',$data);
 }
}

最佳实践

始终单独创建用户/登录控制器,您将有更多空间来创建诸如用户角色检查和将用户重定向到其特定于角色的仪表板/配置文件等功能

在父控制器中保留登录/注销检查功能,并从该控制器扩展控制器。例如,创建一个名为My_controller的控制器,并将isLoggedin检查和注销功能放在其中

class My_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
    }
    public function isLoggedIn()
    {
        if(!empty($this->session->userdata['id'])&& $this->session->userdata['type']=='admin')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public function logout()
    {
        $this->session->sess_destroy();
        redirect(base_url());
    }
}
然后创建用户或登录控制器以呈现登录页面并实现登录功能

class Login extends My_Controller
{
 public function __construct()
 {
   parent::__construct();
   $this->load->model('user_model');
   $this->load->library("security");
 }

 public function index()
 {
   if(!$this->isLoggedin()) // if the user is not logged in render login screen
   {
    if($_POST) // or if($this->input->post)
    {
     $data=$this->security->xss_clean($_POST);
     $user=$this->user_model->checkUser($data);
     if(!empty($user))
     {
       $this->session->set_userdata($user);
       redirect(base_url().'profile');
     }
     else
     {
       $data['errors']='Wrong Credentials';
       $this->load->view('login',$data);
     }
   }
   else
   {
     $this->load->view('login');
   }
  }
  else // but if the user is logged in , take him to profile. 
  {
   redirect(base_url().'profile');
  }
}
在你的个人资料控制器中

class Profile extends My_Controller
{
 public function __construct()
 {
  parent::__construct();
  $this->load->model('user_model');
 }

 public function index()
 {
  // if user is not logged in , redirect him back to login screen. 
  if(!$this->isLoggedin()){ redirect(base_url().'login');}
  $userId=$this->session->userdata['id']; // this index depends on the field name
  $data['user']=$this->user_model->getUserDataById($userId);
  $this->load->view('profile',$data);
 }
}

$this->session->userdata('logged_in')的值是多少?@adhantimothyouns我在那里编辑代码,我把$this->session->userdata('logged_in')的值可能您正在登录类中第一手销毁会话…您正在向登录的会话变量传递一个值,因此此变量的值不是布尔值。如果($this->session->has_userdata('logged_in'))或$this->session->has_userdata('logged_in')!=''或!empty($this->session->has_userdata('logged_in'),您可以尝试此操作$this->session->userdata('logged_in')的值是多少?@adhantimothyouns我在那里编辑代码,我把$this->session->userdata('logged_in')的值可能您正在登录类中第一手销毁会话…您正在向登录的会话变量传递一个值,因此此变量的值不是布尔值。如果($this->session->has_userdata('logged_in'))或$this->session->has_userdata('logged_in')!=''或!empty($this->session->has_userdata('logged_in'),您可以尝试此操作