我希望用户在未设置会话时不访问控制器的某些方法。为此,我可以在所有方法中检查会话,如果设置了会话,那么只需转到其他地方重定向到特定页面。由于我有许多方法,如果未设置会话,我不希望用户访问。它的批量通过所有方法和检查会话。是否有任何快捷方式来获得此功能。
我试过检查会话是控制器的构造函数方法,但它适用于所有方法。但我只想要特定的方法来阻止会话未设置。怎么做。
示例:
class dashboard extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->model('dbmodel');
$this->load->helper('url','form');
//verified user check
if($this->session->userdata("unverified") != FALSE) {
redirect("verify_user");
}
}
//verified user check
}
以上代码,一旦未经验证,就会重定向到verify_user控制器'用户转到仪表板控制器时找到会话。但是我希望能够访问仪表板控制器的某些方法。不是所有方法。每当发现会话时此代码重定向,并且不允许访问仪表板控制器的任何方法。
答案 0 :(得分:13)
检查这可能会对您有所帮助
,function Controller($login, $scope){
$scope.username=[
您可以根据需要修改_reuired_user功能
答案 1 :(得分:4)
您可以尝试以下操作 - 如果有帮助
在您的应用程序/核心文件夹中创建一个名为MY_Controller的类
之类的东西class MY_Controller extends CI_Controller
{
public function checkUserSession()
{
if($this->session->userdata("unverified") != FALSE)
{
redirect("verify_user");
}
return true;
}
}
之后,您的仪表板控制器应该看起来像
class dashboard extends MY_Controller
{
public function show_dashboard()
{
if ($this->checkUserSession())
{
//your code
}
}
}
答案 2 :(得分:4)
使用我创建的任何名称创建一个库。用户。
class Users
{
public function __construct()
{
$this->ci =& get_instance();
}
function _is_logged()
{
if(!$this->ci->session->has_userdata('unverified'))
{
redirect('verify_user');
}
}
}
加载库或将其放入application/config/autoload.php
然后只需调用您想要限制的方法顶部的函数。
function abc()
{
$this->users->_is_logged();
// your code
}
答案 3 :(得分:4)
function __construct()
{
parent::__construct();
}
function chk_login()
{
if($this->session->userdata('logged_in'))
{
echo "some action";
}
else
{
redirect('login');
}
}
答案 4 :(得分:4)
根据我的经验,这不是答案,而是建议:
作为开发人员,如果按照@ user1048123的上述答案进行操作就很容易。
但是,例如,如果您正在访问不需要会话的方法(例如:索引)但仍需要处理function _required_user()
方法,必须先处理索引,然后才能传递更大的数组(例如:数组名称中的30个方法)。这将减慢不需要会话的方法的加载时间。为了更好的性能检查,会话是需要检查会话的方法(在每种方法中)。
这个想法可能会更老,但是当你有更多的方法或用户更大时,它确实很重要。
答案 5 :(得分:1)
在控制器
中<?php
class dashboard extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->model('dbmodel');
$this->load->helper('url','form');
}
public function index()
{
$user = $this->session->userdata("unverified")//asign session value to variauble
$result = $this->dbmodel->check_user($user);//check user validity
if(empty($result))
{
//user is not verified
$this->load->view('unverified_loging');
}
else
{
//user is verified
$this->load->view('verified_loging');
}
}
在模型中
public function check_user($user)
{
$query = $this->db->query("SELECT * FROM user WHERE <argument here>");//check with database
$result = $query->result_array();
return $result;
}
如果用户对validity
用户感到满意,则会将数据传递给$result
。否则如果对validity
不满意,它会将$result
作为NULL
返回。
因此,在控制器中,您可以检查$result
是否为空