我正在尝试在PHP中创建cookie而不使用会话。这就是我创建它们的方式:
echo 'Successfully registered :)';
$name = $_POST['user_name'];
setcookie("name", $name);
完成所有操作后,这将位于页面底部。我看到页面上的回声线,我也知道 $_POST['user_name'];包含一个值。所以应该设置饼干。在同一页面顶部的<body>
标签正下方,我echo $_COOKIE['name'];
.当我重新加载页面时,我看不到任何内容,它是一个空白页面。我可以粘贴整个页面,但它是~150行。
正如您在 PHP 手册中读到的,在进行任何输出之前必须调用 setcookie()
。
顺便说一句,这有可能创建一个漂亮的XSS,在将其反映为cookie内容之前,您应该真正过滤POST变量。
cookie 与其余的 HTTP 标头一起发送,这意味着它需要在任何页面标记或其他任何内容之前设置。PHP Cookie Docs
此外,您需要清理任何用户输入以防止任何恶意行为。从 PHP 5.2 开始,引入了filter_var,可以在这种情况下使用。