0

ログアウト後に現在のURLにリダイレクトするにはどうすればよいですか?

ログアウト用のHTLM:

<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>

コントローラ機能:

function logout() { 
        $this->session->sess_destroy();
        redirect(base_url()); 
    }
4

5 に答える 5

4

yAnTarには正しい考えがあります(現在のURLの最後のURLを保存します)が、CI URLは通常、base64でエンコードされた文字列(のように=)のすべての文字を受け入れるわけではありません。これを試して:

<a href="<?php echo base_url() ?>korisnik/logout?last_url=<?php echo urlencode(current_url())">Logout</a>
function logout() {
    $this->session->sess_destroy();
    redirect($this->input->get('last_url'));
}

別のオプションはにリダイレクトすること$this->input->server('HTTP_REFERER')ですが、過去に問題があり(古いバージョンのGoogle Chrome送信favicon.ico)、通常​​はお勧めしません。

于 2012-06-19T11:16:25.843 に答える
2

ログアウト機能で使用する

$this->session->set_flashdata('redirect_url', current_url());

そして今、あなたの他の方法で

if($this->session->flashdata('redirect_url'))
{
   $url = $this->session->flashdata('redirect_url');
   redirect($url);
}
于 2012-06-19T11:18:08.193 に答える
1

メソッドログアウトの最初のオプションのようにURLを追加できます

<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>"

あなたの関数の次

public function logout($url){
    redirect(base64_decode($url));
}
于 2012-06-19T10:41:16.390 に答える
0

リダイレクトのみを要求している場合は、このようなことが問題の解決に役立ちます。

$url= base_url().'index.php/korisnik/logout'; 
redirect($url);

私が見たところ、base_url()問題があるか、URLが欠落index.phpしていることがわかりました。確認してください。

于 2012-06-19T11:12:05.577 に答える
0

この問題が発生したとき、コントローラーの構成で次のコードを使用していました。

$this->session->set_userdata(array('last_url' => current_url()));

ファビコンを設定してからしばらくすると、last_urlを使用するいくつかの関数でfavicon.icoにリダイレクトされていることに気付き始めました。

私は最終的に問題を理解しました。htaccessファイルにfavicon.icoを追加したところ、完全に機能するようになりました。

.htaccess行は次のとおりです。

RewriteCond $1 !^(index\.php|img|css|js|slider|uploads|robots\.txt|favicon\.ico)

これが他の誰かに役立つことを願っています。

于 2013-06-12T11:50:57.297 に答える