我先被創建$_SESSION['username']
變量文件:
<?php
$kullaniciadi = $_POST['kullaniciadi'];
$sifre = $_POST['sifre'];
if ((!$kullaniciadi =="") and (!$sifre =="")) {
include("db.php");
$sql = $sqlt->query("select * from uye where kullaniciadi='$kullaniciadi' and sifre='".md5($sifre)."'");
$kayitsayisi = mysqli_num_rows($sql);
if ($kayitsayisi == "0") {
header ("Location: login.php?hata=yes");
}
else {
$kontrol_ok = $sql -> fetch_assoc();
$k=$kontrol_ok["kullaniciadi"];
session_start();
$_SESSION['username']= $k;
header ("Location: homepage.php");
}
}
else {
header ("Location: login.php?hata=yes");
}
?>
它被稱爲login_do.php
(我從login.php
形式發送MySQL的數據在這裏,做此文件中的用戶名和密碼校驗)。
比所有其他PHP文件我也有,我首先:
<?php
session_start();
if (isset($_SESSION["username"])) {
echo 'loginok';
} else {
header ("Location: login.php");
}
?>
比我有一個logout.php
,用戶會被重定向到,如果他按下一個按鈕。 logout.php
文件包含此:
<?php
session_start();
if(isset($_SESSION['username'])) {
unset($_SESSION['username']);
}
session_destroy();
header("Location: login.php")
?>
但它根本不起作用。我的意思是,如果我自己瀏覽我的瀏覽器cookies並刪除SESSION cookie,那麼整個系統都會正常工作,除非我登錄,否則我無法訪問除login.php
以外的任何其他php文件。但我需要此操作才能使用註銷。而不是我手動從瀏覽器中刪除會話。
我認爲'session_destroy()'部分將阻止'unset'部分來自工作,因爲PHP序列化的請求結束到那個時候它一直會話銷燬。在這種情況下,當你再次啓動它時,它將加載之前包含'$ _SESSION ['username']' – apokryfos
的會話數據。同樣嘗試使用沒有session_destroy()的代碼,它不起作用。它讓我瘋狂。我在這裏犯了什麼錯誤。 –
值得一提的是,無論成功與否,您的「login_do.php」將始終設置$ _SESSION ['用戶名']。 – apokryfos