0

ここで私のphpコードに少し問題がありました...助けてもらえますか?問題は、私のlogout.phpでセッションの設定を解除して破棄すると、他のページを初めてロードしたときに機能することです..しかし、直後にリフレッシュすると、セッションが再び開始されますが、これはよくわかりません? 特定の名前のセッションを探すページがあるためです。これが私のコードです:

ログイン.php:

<?php session_start();
//Get username and password
$email = $_POST['email'];
$password = $_POST['password'];

//Sorting special characters away, with exception of "-" and "."
stripslashes($email);
$email = preg_replace('/[^A-Za-z0-9@\.\-]/','', $email);


//Getting the password from the database
$link = mysqli_connect("****", "****", "****", "****");
if (mysqli_connect_errno($connect)) 
{
    echo "Connection Failed!";
    mysqli_close($connect);
}
$sql = "SELECT * FROM admins WHERE email = '". $email . "'";
if ($result = mysqli_query($link, $sql))
{
    while ($row = mysqli_fetch_row($result))
    {
        $db_password = $row[2];
    }
    mysqli_free_result($result);

}
mysqli_close($connect);

//Compare DB-password to entered password
if ($db_password == $password)
{
    $_SESSION['admin'] = $email;
    header("Location: ../index.php");
    exit();
}
header("Location: index.php");
exit();
?>

Logout.php:

if(!isset($_SESSION['admin']))
{
    header("Location: ../index.php");
    exit();
}
else
{
    session_unset();
    session_destroy();
    echo '<h1>You have been succesfully logged out!</h>';
    exit();
}

Index.php:

if (isset($_SESSION['admin']))
{
    echo '<div id="admin"><br>
    <h3>'.$_SESSION["admin"].'</h3>
    <a href="http://www.mysite.com/admin"><span>Admin panel</span></a><br>
    <a href="http://www.mysite.com/admin/logout.php"><span>Log out</span></a>
    </div>';
}

そして、はい、私session_start()は私のページのすべての上に乗った.

index.php でわかるように、$_SESSION['admin']が設定されている場合に何らかのコードを記述したいと考えています。そして、logout.php でセッションを破棄して index.php に移動すると、最初にページをロードしたときに機能します。しかし、更新すると、コードが再び表示されます。これは、何らかの形でセッションが再度設定されたに違いないことを意味します! しかし、私はなぜわからないのですか?助けてください!

編集: login.php のコード全体を配置しました。残りの 2 ページは純粋な HTML です。私が投稿したのはすべて私のPHPコードです!

4

2 に答える 2

1

PHPSESSID Cookie が原因である可能性があります。ブラウザからPHPSESSID Cookieを削除して試してみてください

if(!isset($_SESSION['admin']))
{
    header("Location: ../index.php");
    exit();
}
else
{
    session_unset();
    session_destroy();
    setcookie('phpsessid','value',time()-1);  
    echo '<h1>You have been succesfully logged out!</h>';
    exit();
}
于 2013-04-24T06:51:47.300 に答える