1

あなたの助けが必要なコードイグナイターで書かれたPHPプログラムがあります! 3週間がんばりました!

http://www.sampleurl.com/index.php/controllernameの代わりにhttp://www.sampleurl.com/controllernameを作成するために htaccess mod を書き直しました。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L] 
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.

    ErrorDocument 404 /index.php
</IfModule> 

ダッシュボード用のコントローラーがあります (現在、セッションのテストに使用されています)。

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

            $data = array(
                'fb_data' => $is_logged_in,
            );

            if (!isset($is_logged_in) || $is_logged_in != true){
                redirect('/error');
            }


        }

以下は、現在のセッションを強制終了してダッシュボード ページにリダイレクトすることを想定した関数です。

$('#logoutbtn').click(function(){
         $.ajax({
            type:"POST",
            url: "/fbcontroller/killsession",
            datatype: "json",
            success: function(){
                alert("Logout");
            }
         });
    });


 public function killsession(){
           $this->session->sess_destroy();
            redirect('/dashboard');
        }

問題 1: あるコントローラーの関数から別のコントローラーにリダイレクトすると、ここでリダイレクトが失敗します。ダッシュボードに誘導する代わりに、firebug は 404 エラー、ページが見つからないことを表示します。応答では、/error ページのすべての HTML コードが表示されます。リダイレクトが機能するということですか?はいの場合、ブラウザに表示されないのはなぜですか?

問題 2: セッションは破棄されますが、更新 (F5) してもログインしたページが残ります。

4

1 に答える 1

3

htaccess については、次のことをお勧めします。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

そして、セッション CI を強制終了すると、次のページの読み込み (この場合はリダイレクト) で新しい 1 が作成されることを知っておいてください.. セッションは、ユーザー ログインのためだけのものではありません。

app/config/config.php で設定することを忘れないでください

$config["index_page"] = '';
于 2013-10-16T09:09:32.790 に答える