为什么我的代码没有删除$ _SESSION变量?

时间:2016-03-07 08:50:04

标签: php session cookies session-cookies

我有一个首次创建$_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")

?>

但它根本不起作用。我的意思是,如果我进入我的浏览器cookie并自行删除SESSION cookie,那么整个系统都可以工作,除了我登录之外我无法访问除login.php以外的任何其他php文件。但我需要这与logout.php一起使用,而不是我手动从浏览器中删除会话。

1 个答案:

答案 0 :(得分:-1)

session_unset();

  
    

session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。

         

为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。

  

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