我有一些简单的静态登录PHP逻辑,并尝试将用户名保存在cookie中。不幸的是,它没有保存任何东西,也没有返回错误,所以我不确定是什么问题。也许你可以在代码中发现我做错了什么。
$users = array('allan'=>'allanpass');
$username = $_POST["username"];
$enterpass = $_POST["password"];
if(isset($_POST["username"])) {
if (array_key_exists($username, $users)) {
$pass = $users["allanpass"];
if($enterpass == $pass) {
setcookie("heyhey", 'user2', time() + 60 * 60 * 24 * 7, '/');
echo "Welcome back! <br />";
echo '<a href="login.php?link=link1">Link1</a><br />';
echo '<a href="login.php?link=link2">Link2</a><br />';
echo '<a href="login.php?link=link3">Link3</a><br />';
} else {
echo "pass does not exist";
}
} else {
array_push($users, $username);
echo "hello new user <br />";
echo '<a href="#">Link1</a><br />';
echo '<a href="#">Link2</a><br />';
echo '<a href="#">Link3</a><br />';
}
} else {
echo "Please fill in the form";
};
编辑:我没有保存以前的cookie。一切都被摧毁了。
谢谢大家的意见,但问题还不错。就是我在发送标题后设置了一个cookie。现在这并不意味着我必须在我的文件顶部设置一个cookie,但我在我的文件顶部有一些注释和空格并删除这些删除标题发送错误。如果删除空格不能修复标题错误,请在设置cookie和ob_start()
之后尝试使用ob_end_flush();
。但这不是最好的做法。
我也收到了未定义索引的警告,我已经定义了变量。检查是否设置了值,然后将它们分配给我在if语句中使用的变量也有帮助。
$username = isset($_POST['username']) ? $_POST['username'] : '';
$enterpass = isset($_POST['password']) ? $_POST['password'] : '';