Php Cookies不';不要创造自己

Php Cookies不';不要创造自己,php,cookies,Php,Cookies,我已经找了一个小时了,但我对它并不陌生,但我不明白我做错了什么 我有一个创建cookie的代码: setcookie("id", $_POST['username'], time()+365*24*3600, "", "www.mysite.com"); 没有任何帮助,一个$u COOKIE['id']的var转储总是返回空值 发生了什么?说明如果未启用缓冲,则应在将任何其他内容发送到浏览器之前调用setcookie()。因为setc

我已经找了一个小时了,但我对它并不陌生,但我不明白我做错了什么

我有一个创建cookie的代码:

setcookie("id", $_POST['username'], time()+365*24*3600, "", "www.mysite.com");
没有任何帮助,一个$u COOKIE['id']的var转储总是返回空值

发生了什么?

说明如果未启用缓冲,则应在将任何其他内容发送到浏览器之前调用setcookie()。因为setcookie()设置HTTP头。在没有缓冲的情况下,写入浏览器的第一个内容将导致发送所有标题,而下面的set header调用将不会执行任何操作

来自同一链接的另一件事:

在下一次加载cookie应该可见的页面之前,cookie将不可见。测试cookie是否为 成功设置,请在之前的下一个加载页上检查cookie cookie过期了。Expire time通过expires参数设置。A. 调试cookies存在的好方法是简单地调用
print\r($\u COOKIE)


我不能把它放在任何事情之前,我先要做一些验证

<?php 
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

if (isset($_POST['submit']))
{
    

$username = $_POST['username'];
$password = $_POST['password'];
$bdd = new PDO('mysql:host=host.hosting-data.io;dbname=dtb','username','password');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$req = $bdd->prepare("SELECT * FROM members WHERE username = '$username'");
$req->execute();
$user = $req->fetch(PDO::FETCH_OBJ);

if ($req->rowcount() == 0)
{
    $_SESSION['login_error'] = 1;
    header("Location:../account.php");
}
elseif ($_POST['password'] != $user->password)
{
    $_SESSION['login_error'] = 2;
    header("Location:../account.php");
}
elseif ($_POST['password'] == $user->password)
{
    $_SESSION['id'] = $user->username;
    
        setcookie("id", $_POST['username'], ['expires'=>time()+365*24*3600, 'path'=>"", 'domain' => "www.site.com"]);
        
    
    header("Location:../account.php");
}

} // Fin submit
?>

我相信,您可以在任何输出之前调用
setcookie
,包括
标记以及任何空格?根据您是否尝试过使用
PHP7.3
备选方案:
setcookie(“id”、$\u POST['username']、['expires'=>time()+365*24*3600、'path'=>“”、'domain'=>“www.mysite.com”])
您能告诉我们如何以及在哪里从页面/代码中调用
setcookie
函数吗?在设置Cookie之前,我只做了一些验证:尝试将path参数设置为“/”而不是“”,并确保域参数值与浏览器访问页面时使用的值相同。毫无疑问,你可以试着完全不去设置它们,看看这会有什么不同。