我有一个首次创建$_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一起使用,而不是我手动从浏览器中删除会话。
答案 0 :(得分:-1)
session_unset();
session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。
为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。