为什么在我的CodeIgniter应用程序中运行is_logged_in()方法?

时间:2015-08-10 22:22:56

标签: php codeigniter

我退出之后不知道为什么在is_logged_in()函数中,页面 〜/ home /成员变得空白。如果我评论退出;它可以加载视图页面。附: $ is_logged_in尚未设置。

<?php
    class Home extends CI_Controller {
        function __construct() {
            parent::__construct();
            $this->is_logged_in();
        }

        function members() {}

        function is_logged_in() {
            $is_logged_in = $this->session->userdata('is_logged_in');

            if(!isset($is_logged_in) || $is_logged_in != true) {
                $data['main_content'] = 'login_failure';
                $this->load->view('inc/template', $data);
                //exit();
            }
        }
    }
?>

2 个答案:

答案 0 :(得分:1)

页面为空白,因为退出后无需显示此内容

public function is_login() {


      $is_login=$this->session->userdata('is_login');
      if(!isset($is_login) || $is_login !=true)
      {
        //don;t echo the message from controller 
        echo "you don\'t have permission to access this page <a href="reference to login page">Login</a>";
        die();
      }
}

实际问题是您使用退出。加载视图时,其输出将添加到Output类(system / core / Output.php)。然后通过$ OUT-&gt; _display()行将最终视图数据发送(回显)到浏览器;在system / core / CodeIgniter.php中找到。

由于您在那里抛出了退出程序,脚本会停止,并且永远不会调用该显示方法。

答案 1 :(得分:1)

不使用__construct中的函数在每个方法中使用。 仅在用户有效时加载,否则将加载日志页

在控制器中

<?php
    class Home extends CI_Controller {
        function __construct() {
            parent::__construct();

        }

        function index()
        {
           $result =  $this->Model_name->is_logged_in();
            if($result==1)
            {
                //valid user
                //$this->load->view("admin_panel");
            }
            else
            {
                //invalid user
                //$this->load->view("loging");
            }            
        }


    }
?>
模型中的

<?php

    function is_logged_in()
    {
        $is_logged_in = $this->session->userdata('is_logged_in');

        if(!empty($is_logged_in))
        {
            $log = 1;
            return $log;

        }
        else
        {
            $log = 0;
            return $log;
        }
    }