0

Web サイトにログアウト手順を実装しようとしています。ユーザーがサインアウト ボタンをクリックすると、次のhomeコントローラー スクリプトにリダイレクトされます。

http : // mydomain/php/ci/index.php/index/?logout=set

そして、私のホームコントローラーindex機能では、 logout=set かどうかを確認してから、すべてのセッションを破棄します。

    echo @$_GET['logout'];
    exit();
    if(@$_GET['logout'] == "set")
    {
        unset($_SESSION['userid']);
        @$_SESSION = array();
        @session_unset();
        @session_destroy();
    }

しかし、ログアウトパラメータが渡されていないため、ここに到達しても何も出力されません。サインアウト ボタンをクリックしてここにアクセスすると、次の URL が表示されます。

http://localhost/php/ci/home/

なぜこうなった?

4

2 に答える 2

3

次のようにすべてのgetデータを取得できますCodeIgniter

var_dump($this->input->get());

ただし、このindexメソッドを使用してユーザーをログアウトするのではなく、次のようなメソッドを作成してください。

class Users extends CI_Controller() {
    public function index() {
        // Index stuff here        
    }

    public function logout() {
        // Your check if a user is logged in, instead of the dirty @
        if(isSet($_SESSION['userid'])) {
            unset($_SESSION['userid']);
        }

        redirect();
    }
}

次に、ビューで次のようなリンクを作成します。

site_url("users/logout");

これには CodeIgniter セッション ハンドラを使用する必要がありますが、これは問題の簡単な解決策です。CodeIgniter のマニュアルを読むことをお勧めします。ログアウトするための「ソリューション」は非常に汚れており、MVC の原則に適合しないため

于 2012-10-29T09:54:57.560 に答える
1

Codeigniter にはデフォルトの INPUT クラスがロードされています。確認してください。

http://ellislab.com/codeigniter/user_guide/libraries/input.html

于 2012-10-29T09:51:38.613 に答える