0

我在 Codeigniter 中有这个查看页面

<?php 
$is_logged_in = $this->session->userdata('is_logged_in');

        if (!isset($is_logged_in) || $is_logged_in != true) 
        {
            return false;
        }
 ?>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" media="screen" />
</head>
<body>
    <p><?php echo form_open('it/create'); ?></p>
    <p><?php echo form_input('department', 'department'); ?></p>
<p><?php echo form_textarea('problem', 'Issue'); ?></p>
    <p><?php echo form_submit('submit', 'Submit'); ?></p>
    <p><?php echo form_close(); ?></p>
</body>
</html>

这是控制

    class Create extends CI_Controller {

        public function __construct()
        {
            parent::__construct();
            $this->is_logged_in();
        }

        public function create_issue()
        {
            $this->load->view('v_it');
        }

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

            if (!isset($is_logged_in) || $is_logged_in != true) 
            {
                echo "you don't have permission";
            }
        }
    }

但是当我直接从 url 登录到视图时,它会毫无问题地打开,这有什么问题,我什至像添加的那样直接在视图页面中添加了会话,但它打开了。

更新:这就是我在另一个控制器中添加 SESSION 的地方:

$data = array(
                'username' => $this->input->post('username'),
                'is_loged_in' => 'true' );

            $this->session->set_userdata($data);
            redirect('create/create_issue');
4

2 回答 2

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

        if (!isset($is_logged_in) || $is_logged_in != true) 
        {
            echo "you don't have permission";
        } else {
            $this->load->view('v_it');
        }
    }

在你的控制器中。不确定您认为 return false 应该在视图中做什么,但它没有退出任何东西,只是将 false 返回到无处,然后继续显示 HTML。您确实希望控制器本身具有这种逻辑,您只需检查是否已登录,如果它返回 false,则根本不加载视图。

于 2012-11-10T14:13:05.837 回答
1

您应该将授权逻辑写入控制器,它可能会对您有所帮助。即使您需要写入逻辑以查看参考下方

在控制器中:

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

        if (is_logged_in ) 
        {
           redirect();//redirect your login page to the user
        } else {
            $this->load->view('v_it');
        }
    }

在视图逻辑中:

<?php 
    $is_logged_in = $this->session->userdata('is_logged_in');

            if (!isset($is_logged_in) || $is_logged_in != true) 
            {
                echo "you are not valid user";
            }
else{

     ?>
    <html>
    <head>
        <title></title>
        <link rel="stylesheet" href="<?php echo base_url();?>css/style.css" type="text/css" media="screen" />
    </head>
    <body>
        <p><?php echo form_open('it/create'); ?></p>
        <p><?php echo form_input('department', 'department'); ?></p>
    <p><?php echo form_textarea('problem', 'Issue'); ?></p>
        <p><?php echo form_submit('submit', 'Submit'); ?></p>
        <p><?php echo form_close(); ?></p>
    </body>
    </html>
<?php } ?>
于 2013-11-22T12:15:29.757 回答