0

codeigniter で Cookie のみに基づいて基本的なログイン設定を作成しました。このような

class Display extends CI_Controller {
public function Display() {
    parent::__construct();
}
public function index() {
    //var_dump($_COOKIE);
    if (isset($_COOKIE["user"])){
        redirect('home')
    }else{
        redirect('display/login');
    }

}
public function login() {
    //var_dump($_COOKIE);
    if (isset($_COOKIE["user"])){
        $this->load->view('home');
    }else{
        $username = $this->input->post('username');
                    //some validation
        setcookie("user",$username,time()+60*60*24*30);
        redirect('home');
    }
}

}

ホームコントローラーで、Cookieがページにアクセスすることを確認します

class Home extends CI_Controller {
public function Home() {
    parent::__construct();
    //var_dump(get_cookie("user"));exit;
     if (isset($_COOKIE["user"]) == false){
     redirect('display/login');
    }
}

}

ここで直面している問題は、クラスのコンストラクターで Cookie を取得できないことです。クラス内の関数にアクセスする前に、クラス内の Cookie をチェックする必要があります。それを行う適切な方法は何ですか?前もって感謝します。

4

3 に答える 3

1

Cookieのパラメーターを割り当てないため、割り当ててpathいるページのパスを取得し、その結果/loginまたは同様のものになり、ページの他の部分/homeや単にルートには送信されません。setcookie()like を次のように変更します。

setcookie("user",$username,time()+60*60*24*30, '/'); // notice the added path at the end

また、認証はまったく安全ではないため、誰でもクライアントに Cookie を設定し、その存在のみをリレーできます。Cookie のuser保持内容は誰でも変更できます。

于 2012-11-19T08:41:20.707 に答える
0

CodeIgniter独自の実装(Cookie_Helper)を使用したほうがよいでしょう:http://ellislab.com/codeigniter/user_guide/helpers/cookie_helper.html

于 2012-11-19T08:36:58.150 に答える
0

CodeIgniter User Guide Version 2.2.0: Input Classを確認してください。

$this->input->set_cookie()Cookie の設定と$this->input->cookie()取得に使用

于 2012-11-19T08:41:22.597 に答える