php - 未在浏览器中设置 Cookie [PHP]
问题描述
我有一些简单的静态登录 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,但我在我的文件顶部有一些注释和空格,删除这些摆脱了标题发送错误。如果删除空格不能修复标题错误,请尝试ob_start()
在设置 cookie 之前和ob_end_flush();
之后使用。但这不是最佳做法。
我还收到了未定义索引的警告,其中我定义了我的变量。在将值分配给我在 if 语句中使用的变量之前检查是否设置了值也有帮助。
$username = isset($_POST['username']) ? $_POST['username'] : '';
$enterpass = isset($_POST['password']) ? $_POST['password'] : '';
推荐阅读
- python - 单击QListWidget中的列表项后如何触发功能?PyQt5
- memory-management - 在操作系统中使用分页方法如何证明其开销是合理的?
- python - 一起使用 Snakemake 和 Dask 有意义吗?
- python - Python 3 urllib 库没有返回与 Chrome 上检查的相同的 HTML
- android - API < 23 上带有图像选择器的 MaterialButton
- linux - Web 中的 Vala Image Base64
- r - -title 中的错误:一元运算符的无效参数执行停止
- python - 如何使用正则表达式删除重复字符 Python
- python - selenium - 想要从表的第二列中选择所有值
- python - python拆分为n个数组(批处理)并尝试在一批数学中对相同的ID进行分组