2012-01-23 3 views
0

私は2つのセッションを持つlogout.phpページを持っています。 1はユーザーパネル用、その他は管理パネル用です。そこで私は次のコードを使ってサインアウトしました。セッションの問題でPHPがサインアウトします

管理者ログアウトの場合。ユーザーのログアウトについては

<?php 
include("include/session.php"); 
include("db.php"); 
unset($_SESSION['uname_ad']); 
?> 

<?php 
include("include/session.php"); 
include("db.php"); 
unset($_SESSION['uname']); 
?> 

だから、PHPでサインアウト安全ですか?

答えて

3

私は...

session_destroy();

+0

返信ありがとうございます@Daid Nguyen。しかし、私がsession_destroy()を使用すると、両方の変数が破棄されます。ユーザーと管理者の両方がログアウトするようにします。 – user1161867

+0

すべての回答@David Nguyen – user1161867

+0

なぜ彼らは別々に扱われるのでしょうか? –

2

をセッション全体を破壊するだろう、私はあなたにも両方のあなたのための別のセッション名を使用するように少しより安全かもしれ

session_destroy(); 
header("location:index.php"); 
+2

ヘッダ 'Location'リダイレクトの後には、必ず' exit; 'を呼び出してください。 – FtDRbwLXw6

+0

あなたの提案に感謝@arascanakin。 – user1161867

0

を使用することができると思います管理セッションとユーザーセッション。そうすれば、ユーザー/管理セッション全体を破壊し、他のセッションには影響を与えません。

管理者とユーザーの両方に別々のCookieを使用し、管理者とユーザーとして同時にログインできますが、2つのセッションは互いに分離されます。

あなたが同じセッション内で両方の管理者とユーザセッションデータを維持するつもりなら際に、どちらか一方のログアウト、あなたは識別子を再生成する必要がありますので、session_name()

+0

私がsession_destroy()でセッションを破壊すると、両方の変数が破壊されます。ユーザーと管理者の両方がログアウトするようにします。どうすれば分けることができますか – user1161867

+0

技術的には、管理セッションとユーザーセッションの間でセッション名を変更するので、一度に1つのセッションしか使用されません。したがって、session_name( 'admin')を使用している管理者の場合、session_destroy()はアクティブであるため、adminセッション名のみを破棄します。もう一方は放置されています。 – drew010

0

あなたがすべき常にregenerate the session identifierユーザー権限を変更するを参照してください。 。

+0

@ drrcknish..an私に例を挙げてください。 – user1161867

+0

@ user1161867:自分で試してみてください。少しの研究を行います。あなたがまだそれを理解することができない場合は、私たちがあなたが試したものを表示し、何がうまくいかないと私たちはあなたを助けます。 – FtDRbwLXw6

+0

つまり、セッションを破棄して再作成します。 –

関連する問題