如何在codeigniter中从视图重定向到控制器?

时间:2017-07-19 19:35:57

标签: php 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
    }

    }

?>

但它没有重定向到下一页。但是,如果我在控制器中写这个,它可以正常工作。我在标题视图中写了它,因为我想在进入用户的每个页面中检查它。如何改进并以正确的方式书写?提前致谢

3 个答案:

答案 0 :(得分: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
    }
  }
} 

答案 1 :(得分: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.
        }
    }
}

答案 2 :(得分: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>
 }