php setcookie 没有正常工作
php setcookie is not working with no errors
我正在尝试使用 PHP 设置 cookie。我写了一个登录脚本来检查从用户那里收到的数据与数据库数据,然后如果数据匹配,它会设置一个 cookie 来存储用户名和密码,以便在接下来的两个小时内使用。
这是一个 PHP 脚本,用于处理 HTTP POST 请求和输出 JSON 以用于 React 应用程序。
我在我的代码中使用了 ob,我确定在设置 cookie 之前没有 headers 发送。
这就是我的代码的样子。
<?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();
没有错误和异常。
更新: 我正在使用 cross-origin 请求。我的客户在 localhost:3000 上 PHP 脚本在 localhost:8080
上 运行
问题已解决。实际问题来自 post 请求。它没有随请求发送凭据。
首先,我坐在一起 Credentials to true。然后更改一些 headers 以在我的 apache 配置中接受凭据,如下所示:
Header set Access-Control-Allow-Origin "http://localdev.localdev.com:3000"
Header set Access-Control-Allow-Headers "Content-Type"
Header set Access-Control-Allow-Credentials "true"
注意:正如我在评论中提到的,我还在 /etc/hosts 中为我的 127.0.0.1 添加了一个域。
我知道这不完全是 PHP 问题。但这可能会有所帮助。
我正在尝试使用 PHP 设置 cookie。我写了一个登录脚本来检查从用户那里收到的数据与数据库数据,然后如果数据匹配,它会设置一个 cookie 来存储用户名和密码,以便在接下来的两个小时内使用。 这是一个 PHP 脚本,用于处理 HTTP POST 请求和输出 JSON 以用于 React 应用程序。
我在我的代码中使用了 ob,我确定在设置 cookie 之前没有 headers 发送。
这就是我的代码的样子。
<?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();
没有错误和异常。
更新: 我正在使用 cross-origin 请求。我的客户在 localhost:3000 上 PHP 脚本在 localhost:8080
上 运行问题已解决。实际问题来自 post 请求。它没有随请求发送凭据。 首先,我坐在一起 Credentials to true。然后更改一些 headers 以在我的 apache 配置中接受凭据,如下所示:
Header set Access-Control-Allow-Origin "http://localdev.localdev.com:3000"
Header set Access-Control-Allow-Headers "Content-Type"
Header set Access-Control-Allow-Credentials "true"
注意:正如我在评论中提到的,我还在 /etc/hosts 中为我的 127.0.0.1 添加了一个域。 我知道这不完全是 PHP 问题。但这可能会有所帮助。