2012-01-21 4 views
1

ログアウトリンクを作成する最良の方法は何ですか?すべてのセッションを破棄してログインページにリダイレクトしたいのですが、これを実行する最善の方法はわかりません。今はadmin/logout.phpにつながるリンクがありますが、私のフォルダ構造をユーザーに示すのは悪いことです。ここに私のコードはかなりまっすぐです:PHP - ログアウトリンクの作成

session_start(); 
    session_destroy(); 
     echo "<script type=\"text/javascript\">window.location.href='../login.php';</script>"; 

それはjavascriptやajaxで何かするのが最善でしょうか?

+2

'header(" Location:login.php ")'だけでJSをリダイレクトする理由は? –

+0

これをチェックしてください:http://stackoverflow.com/questions/2241769/php-how-to-destroy-the-session-cookie-correctly – Josh

+0

@MarcB私は、javascriptのリダイレクトが最良の選択であった私はそれをリンクしようとしていましたが、どれほど悪いのかについてのコメントがたくさんありましたので、私はおそらく戻ってそのxDを変更するべきです –

答えて

3

ディレクトリ構造の公開が心配な場合は、ディレクトリを使用しないでください。あなたが任意のページからログアウトすることができます

<?php 
if (isset($_GET['logout'])) { 
    session_start(); 
    session_destroy(); 
    header("Location: login.php"); 
    exit(); 
} 

そうすれば、あなたの「管理者」フォルダが露出れることは決してありませんし、ヘッダをやって()リダイレクトはのためのチャンスがありません意味:単純にすべてのページがlogoutクエリパラメータをチェックしていあなたが使用できる他のリダイレクトメソッド(メタタグ、javascriptなど)を中断するユーザー。あなたが何も出力しなかったので、ユーザーが見るためのページには何も表示されません。

+0

ええ、JavaScriptのリダイレクトが問題でした。何らかの理由で私のディレクトリ構造が公開されましたが、私がheader()に変更したときに修正されました。また、私は '$ _GET []'のアイデアが気に入っています。 –

0

logout.php:

<?php 
session_start(); 
session_destroy(); 
?> 
<html> 
<head> 
<meta HTTP-EQUIV="REFRESH" content="0; url=login.php"> 
</head> 
</html> 

これは、別の.phpページである必要があります。これにリンクするだけで、これは表示されず、index.phpの内容が表示されますが、セッションデータは保存されません。

これはおそらく、これについての最も簡単な方法です。 HTMLリダイレクトを持つシンプルなPHPのすべて。

+0

これは私が思ったものを見てください...私の 'admin/logout.php'はコードは私の質問にリンクされています(PHPタグの中にあります)。しかし、URLはまだ/admin/logout.phpに行きました。私は私の問題は、それは私が 'header()'を代わりに使用すると、これをしないので、JavaScriptのリダイレクトが終わったと思うと思います –