0

Codeigniter にこの View ページがあります

<?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を直接追加しましたが、開きます。

更新:そして、別のコントローラーに 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 に答える