2017-07-19 60 views
1

在我的头鉴于我写了这个代码:如何在codeigniter中将视图重定向到控制器?

<?php 

    if($this->session->userdata('logged_in')) { 
    $query = $this->db->get_where('instructors', array('id' => $this->session->userdata('id'))); 

    $insdatacheck = $query->row_array(); 

    if($insdatacheck['name'] == '') { 
     redirect(base_url().'user/continueregistration'); 
    } else { ?> 
     <script type="text/javascript">alert('test');</script> 
     <?php 
    } 

    } 

?> 

不过,这并不重定向到以下页面。但是,如果我在控制器中编写它,它可以正常工作。我把它写在标题视图中,因为我想在输入用户的每个页面中检查它。我该如何改进它并以适当的方式书写?在此先感谢

+0

正确的做法是把这个控制器。通常从控制器调用一个视图,所以你可以随时使用控制器逻辑 – Vickel

+0

,但是如何以这种方式放置这个控制器,它必须在输入用户的每个页面中检查这个代码? –

+0

查看Muhammad Usman的回答 – Vickel

回答

1

我认为,而不是你的头,你应该把你的检查在你的控制器的构造函数。

class Test extends CI_Controller { 

    function __construct() { 
    parent::__construct(); 

    // if not logged-in redirect to login page 
    if ($this->session->userdata('logged_in') == false) { 
     redirect('login'); // where you want to redirect 
    } 
    } 
} 
+0

但是我想让这段代码在每一页上都能正常工作。我应该写它并把这个代码放到每个函数中吗? –

+0

如果您在构造函数中进行检查,则必须登录才能访问该控制器的所有功能。 –

+0

我很抱歉打扰你,但我没有得到它:(你可以显示请解释清楚吗? –

0

另一种选择是创建一个基础控制器。将函数放在基本控制器中,然后继承它。

要在CodeIgniter中实现此目的,请在应用程序的libraries文件夹中创建一个名为MY_Controller.php的文件。

class MY_Controller extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function is_logged_in() 
    { 
     $user = $this->session->userdata('user_data'); 
     return isset($user); 
    } 
} 

然后让你的控制器从这个基础控制器继承。

class X extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function do_something() 
    { 
     if ($this->is_logged_in()) 
     { 
      // User is logged in. Do something. 
     } 
    } 
} 
0
First create session in the controller only, 

Then we access session in any page, 

$this->load->library('session'); 
$user=$this->session->userdata('logged_in'); 

if (!isset($user)) { 
redirect(base_url().'user/continueregistration'); 
    } 
else { 
    <script type="text/javascript">alert('test');</script> 
} 
相关问题