-1

管理者パネルとユーザーパネルがあります。どちらにもログアウトリンクがあります。管理パネルにログインし、その間にユーザーとしてログインします。したがって、両方にセッションがあります。

しかし、管理パネルからログアウトすると、ユーザーパネルからもログに記録されます。ユーザーからログアウトする理由。別のログインセッションを行いました。

管理者とユーザーのログインセッション:

$_SESSION['admin_u'] = $admin_uname;
$_SESSION['admin_pass'] = $admin_pass2; 

$_SESSION['uname'] = $uname;
$_SESSION['pass'] = $pass;  

管理者ログアウトコード:

<?php
if(isset($_SESSION['admin_u']) && isset($_SESSION['admin_pass'])) {
    session_unset($_SESSION['admin_u']);
    session_unset($_SESSION['admin_pass']);
    session_destroy();
    header( "Location:../index.php" );
    exit();     
} else {
    header("Location:../membersignin.php");
    exit();
}
?>

ユーザーログアウトコード:

<?php
if(isset($_SESSION['uname']) && isset($_SESSION['pass'])) {
    session_unset($_SESSION['uname']);
    session_unset($_SESSION['pass']);
    session_destroy();
    header( "Location:../../index.php" );
    exit();     
} else {
    header("Location:../../membersignin.php");
}
?>  

私のコードに何か問題がありますか?

4

2 に答える 2

3

session_destroy()

session_destroy —セッションに登録されているすべてのデータを破棄します

これが呼び出されるということは、ユーザーと管理者の両方のセッションが破棄されていることを意味します。両方からログアウトしたくない場合は、不要なセッション変数の設定を解除し、セッションを破棄しないようにする必要があります。


また、session_unset()誤って使用しています。session_unset()関数は、現在登録されているすべてのセッション変数を解放します。unset()代わりにプレーンを使用してください。

于 2012-11-12T18:00:48.773 に答える
1

session_unsetは、1つの変数だけでなくすべてのセッションをクリアします。

unset($_SESSION['admin'])

多くのための:

http://php.net/manual/en/function.session-unset.php

于 2012-11-12T18:01:32.337 に答える