【发布时间】:2023-03-15 07:41:01
【问题描述】:
很难弄清楚这一点。我知道将此信息存储在 cookie 中不是最佳做法,但这是针对学校项目的,而我的教授只是要求这样做。
这是您登录并设置 cookie 的代码 | admin.php:
'
<?php
if (!isset($_COOKIE['loggedIn'])) {
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else if($_SERVER['PHP_AUTH_USER'] == "user1" &&
$_SERVER['PHP_AUTH_PW'] == "pass1") {
//make the cookie
setcookie("loggedIn", "user1/pass1", time() + 60);
} else {
header('HTTP/1.0 401 Unauthorized');
echo "Invalid Credentials";
exit;
}
} else {
if (isset($_COOKIE['loggedIn']) && $_COOKIE['loggedIn'] == "user1/pass1") {
//YAY DO NOTHING ITS ME
} else {
header('HTTP/1.0 401 Unauthorized');
echo "Invalid Credentials";
exit;
}
}
?>
'
这是我试图运行以删除 cookie 和注销的代码,因此当您再次访问 admin.php 页面时,您将不得不再次输入凭据......但它似乎不起作用。
注销.php:
'
<?php
if(isset($_COOKIE[session_name()])):
setcookie(session_name(), '', time()-7000000, '/');
endif;
if(isset($_COOKIE['loggedIn'])):
setcookie('loggedIn', '', time()-7000000, '/');
endif;
session_start();
session_unset();
//unset($_SESSION["nome"]);
// where $_SESSION["nome"] is your own variable. if you do not have one use only this as follow **session_unset();**
header("Location: index.php");
?>
'
提前感谢您的帮助!
【问题讨论】:
-
不要使用 session_unset()。它是 session_register() 的补充,已经被弃用了很长时间。无论如何,它只有在您实际使用
session_register时才有用。如果您想清除会话,$_SESSION = array()将为您完成。 -
我用
$_SESSION = array()代替session_unset();吗? -
@MarcB 我试过这样做,我仍然可以点击我的管理页面并自动登录。
-
执行 shift-F5 “强制重新加载”。您很可能只是在查看缓存页面。
-
@MarcB 我强制重新加载,并尝试手动清空我的浏览器缓存.. 仍然自动登录。:(
标签: php authentication cookies admin logout