2016-05-18 3 views
1

私はcodeigniterを学んでいます。ユーザがログアウトボタンをクリックするとログインした後、ログインページに戻りますが、ブラウザの戻るボタンをクリックすると、再び接続ページに戻ります。セッションはブラウザに保存されます。代わりにログインページにリダイレクトする方法。codeigniterでログアウトするページ

コード

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class User extends CI_Controller{ 
public function __construct() 
{ 
    parent::__construct(); 

    $this->load->model('user_model'); 

} 
public function index() 
{ 

    if($this->session->userdata('logged_in')) 
    { 
     $session_data = $this->session->userdata('logged_in'); 
     $data['nom'] = $session_data['nom']; 
     redirect('user/connection_Ok'); 
    } 
    else 
    { 
     //If no session, redirect to login page 
     $this->login; 

    } 

} 
public function logout() 
{ 
    $this->session->unset_userdata('logged_in'); 
    // session_destroy(); 
    $this->session->sess_destroy(); 
redirect('login'); 

} 
+0

返信ありがとうございます。ユーザーがログアウトした直後にブラウザの戻るボタンをクリックすると、再びログインページに戻ります。それは – baptpro

+0

私は以前のコメントを答えに回したことに注意してください。 – Sparky

答えて

0

に彼は彼が戻ってログインページになりますが、彼はブラウザの[戻る]ボタンをクリックすると、彼は再び接続ページに戻り、ログアウトボタンをクリックします。セッションはブラウザに保存されます。

ここでは混乱があります。「ログアウト」をクリックすると、logoutコントローラがセッションを破棄します。ブラウザの「戻る」ボタンを使用して、この操作を元に戻したり、セッションを復元することはできません。

言い換えれば、キャッシュされたページはまだログインしているように見えるだけで、彼はまだログインしているわけではありません。制限されたコンテンツにアクセスしようとすると直前のセッションすでに破壊されました。

代わりにログインページにリダイレクトする方法。

ユーザーがブラウザの「戻る」ボタンをクリックするのを止めることはできません。ブラウザはリロードせずに前のページのキャッシュされたバージョンをロードするだけです...それはブラウザの仕組みです。

JavaScriptを有効にすると、ブラウザの履歴のようなものへアクセスできますが、「戻る」ボタンを傍受するための完全な信頼できる方法はありません。 comprehensive or complex the solutionに関係なく、ユーザーは単にJavaScriptを無効にして無効にすることができます。

あなたは強固な認証システムをプログラムする場合は、ユーザーは自動的に、彼らは、ログインせずに制限されたコンテンツにアクセスしようとログインページいつに取られる


FYI - 。CodeIgniterのために、私はお勧め実績のある認証システムを使用しているため、車輪を再開発したり、セキュリティを心配する必要はありません。私はBen Edmund's Ion Authが好きですが、CodeIgniterのためのいくつかの他のソリューションがあります...あなたの研究をしてください。

+0

私はユーザーがブラウザの戻るボタンをクリックしないようにしたいと思っているわけではありませんが、彼は彼がページにリダイレクトする必要があるだけで、彼はちょうどログアウトしているので、 – baptpro

+0

@baptpro、私も述べたように*彼らが行ったときには、*戻るボタンがキャッシュされたバージョンのページをロードし、何もリロードしないからです。 – Sparky

+0

ok、ciの学習者として、私はもっと学ぶつもりです。私の場合の例は、facebookです。私がフェイスブックでログアウトした後、ブラウザの戻るボタンをクリックすると、ログインページに再度リダイレクトされるので、ログイン後に接続ページにアクセスできます。 – baptpro

関連する問題