2013-04-24 33 views
0

我買了我的PHP代碼中的小問題在這裏...你能幫我嗎? 的問題是,當我在我的logout.php,取消設置並銷燬會話,它的工作原理我第一次加載一些我的其他網頁..但是當我後立即刷新,會話將被再次啓動,這我真的不理解?因爲我有我的網頁尋找具有特定名稱的會話。這裏是我的代碼:PHP取消設置和desroyed會話啓動本身

的login.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('/[^[email protected]\.\-]/','', $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代碼!

+0

在您未設置會話後,爲什麼要調用exit()?爲什麼不讓頁面加載完成?在設置標題位置之後調用exit是好的,但爲什麼要在加載時提前退出頁面加載呢? – 2013-04-24 06:50:35

+0

註銷並重新刷新後$ _SESSION ['admin']的值是多少? – 2013-04-24 06:54:13

回答

1

這可能是因爲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(); 
} 
+0

謝謝,Pramod! 添加'的setcookie( 「PHPSESSID」, 「」,時間() - 3600, 「/」);'解決了這個問題! :D – user2140209 2013-04-24 07:00:47

+0

@ user2140209歡迎您 – 2013-04-24 07:01:39

0

刪除PHPSESSID cookie的嘗試一旦刷新,您的以下條件staisfies:

if ($db_password == $password) 

連接建立,會話創建,您將被重定向從login.php中的index.php 。

更改此條件和您的腳本工作