我这样做是为了让用户可以在登录表单上查看“记住我”并设置Cookie。现在,如果他们退出,它会将他们指向logout.php并删除cookie。这一切都有效,除了我收到这些错误消息。
注意:未定义的索引:第6行的C:\ xammp \ htdocs \ mine \ logout.php中的用户名
注意:未定义的索引:第7行的C:\ xammp \ htdocs \ mine \ logout.php中的密码
我的logout.php代码是
<?php
session_start();
if (isset($_SESSION['username'])) {
setcookie('username', $_POST['username'], false, '/');
setcookie('password', $_POST['password'], false, '/');
session_destroy();
echo "You've benn logged out. <a href='index.php'>Click here</a> to return.";
} else {
die ('You are not logged in!');
}
答案 0 :(得分:0)
只需使用isset($_POST['username'])?$_POST['username']:''
代替$_POST['username']
而isset($_POST['password'])?$_POST['password']:''
代替$_POST['password']
答案 1 :(得分:0)
如果您的用户想要注销,他们也不太可能将他们的用户名或密码提交到注销页面,因此$_POST['username']
和$_POST['password']
将为空,因此您会收到错误。< / p>
但是,您不需要知道值(实际用户名或密码)以取消设置cookie,您只需要知道密钥(字面意思是“用户名”和“密码”)。
<?php
session_start();
setcookie('username', '', time()-3600, '/');
setcookie('password', '', time()-3600, '/');
session_write_close();
header("Location: /");
?>
这会将它们注销并将它们重定向到您的首页。
答案 2 :(得分:-1)
这是因为$_POST
超全球尚未获得username
和password
个变量。
我猜测当你从index.php链接到logout.php时你没有POST到logout.php(因此这个调用不会有POST变量)。
您需要做的是在会话中保存用户名和密码(或其他形式的持久存储):
在session_start(); 之后index.php
if (isset($_POST['username']) && isset($_POST['password'])) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
}
然后在logout.php中,您可以使用$_SESSION
超全局而不是$_POST
来清除这些值。
顺便说一句,我真的不知道你为什么要将用户名和密码设置为cookie,但这不仅仅是你的问题。