我買了我的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代碼!
在您未設置會話後,爲什麼要調用exit()?爲什麼不讓頁面加載完成?在設置標題位置之後調用exit是好的,但爲什麼要在加載時提前退出頁面加載呢? – 2013-04-24 06:50:35
註銷並重新刷新後$ _SESSION ['admin']的值是多少? – 2013-04-24 06:54:13