【发布时间】:2019-07-29 21:41:42
【问题描述】:
我正在尝试使用 PHP 设置 cookie。我编写了一个登录脚本,它检查从用户收到的数据与数据库数据,然后如果数据匹配,它会设置一个 cookie 来存储用户名和密码,以便在接下来的两个小时内使用。 这是一个 PHP 脚本,用于处理 HTTP POST 请求并输出 JSON 以用于 React 应用程序。
我在我的代码中使用了 ob 并且我确信在设置 cookie 之前没有发送任何标头。
这就是我的代码的样子。
<?php
ob_start();
function cook($user, $pass, $time){
setcookie("user", $user, time() + $time, "/", "localhost", 0);
setcookie("pass", $pass, time() + $time, "/", "localhost", 0);
}
header('Content-Type: application/json');
//login code(receive data, check password, ...)
cook($user, hash("sha512", $pass), 7200);
$output = //my code output object
echo json_encode($output);
ob_end_flush();
没有错误和异常。
更新:我正在使用跨域请求。我的客户端在 localhost:3000 上,PHP 脚本在 localhost:8080 上运行
【问题讨论】:
-
文档明确指出“不会发送任何输出(除了标题)”,所以这并不完全正确。在标题前拨打
cook。 -
为什么要在 cookie 中存储密码/哈希?
-
除非浏览器与 Web 服务器在同一台机器上,否则 localhost 将无法工作。这需要是您访问 Web 服务器的域。或者你可以不指定它。
-
另外,将密码存储在 cookie 中也不是一个好习惯,即使它们已经过哈希处理。
-
@Cue 不工作
标签: php cookies cors setcookie