ログアウト後に現在のURLにリダイレクトするにはどうすればよいですか?
ログアウト用のHTLM:
<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>
コントローラ機能:
function logout() {
$this->session->sess_destroy();
redirect(base_url());
}
ログアウト後に現在のURLにリダイレクトするにはどうすればよいですか?
ログアウト用のHTLM:
<a href="<?php echo base_url() ?>korisnik/logout">Logout</a>
コントローラ機能:
function logout() {
$this->session->sess_destroy();
redirect(base_url());
}
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
)、通常はお勧めしません。
ログアウト機能で使用する
$this->session->set_flashdata('redirect_url', current_url());
そして今、あなたの他の方法で
if($this->session->flashdata('redirect_url'))
{
$url = $this->session->flashdata('redirect_url');
redirect($url);
}
メソッドログアウトの最初のオプションのようにURLを追加できます
<a href="/korisnik/logout/<?php echo base64_encode(current_url());?>"
あなたの関数の次
public function logout($url){
redirect(base64_decode($url));
}
リダイレクトのみを要求している場合は、このようなことが問題の解決に役立ちます。
$url= base_url().'index.php/korisnik/logout';
redirect($url);
私が見たところ、base_url()
問題があるか、URLが欠落index.php
していることがわかりました。確認してください。
この問題が発生したとき、コントローラーの構成で次のコードを使用していました。
$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)
これが他の誰かに役立つことを願っています。