Php Cookies不';不要创造自己
我已经找了一个小时了,但我对它并不陌生,但我不明白我做错了什么 我有一个创建cookie的代码:Php Cookies不';不要创造自己,php,cookies,Php,Cookies,我已经找了一个小时了,但我对它并不陌生,但我不明白我做错了什么 我有一个创建cookie的代码: setcookie("id", $_POST['username'], time()+365*24*3600, "", "www.mysite.com"); 没有任何帮助,一个$u COOKIE['id']的var转储总是返回空值 发生了什么?说明如果未启用缓冲,则应在将任何其他内容发送到浏览器之前调用setcookie()。因为setc
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参数设置为“/”而不是“”,并确保域参数值与浏览器访问页面时使用的值相同。毫无疑问,你可以试着完全不去设置它们,看看这会有什么不同。