我正在尝试设置连接cookie,但我遇到了一些问题。
$token = openssl_random_pseudo_bytes(16);
$token = bin2hex($token);
setcookie('token', $token, time() + 14*24*3600, null, null, false, true);问题是$token仅在cookie中更改了他的值:
$token = openssl_random_pseudo_bytes(16);
$token = bin2hex($token);
echo $token; //939ec30ae568e2c8ee192a488cb6e646
setcookie('token', $token, time() + 14*24*3600, null, null, false, true);
echo $_COOKIE['token']; //4254ffefa72a856f40540d2bf879546a
echo $token; //939ec30ae568e2c8ee192a488cb6e646我敢打赌这是一个愚蠢的问题,但我找不到任何原因,为什么这个变量要这样做。
(因为我有这个问题,所以我不能将它用于连接:数据库中的值不同)
发布于 2020-10-09 21:03:35
它不是在改变它,而是在设置它,但是在页面刷新之前,您看不到$_COOKIE的值。
您认为它正在更改的原因是,它每次都会设置上一次加载的页面的cookie。
您需要检查cookie是否存在,如果不存在,则设置它。
if (!isset($_COOKIE["token"])){
$token = openssl_random_pseudo_bytes(16);
$token = bin2hex($token);
setcookie('token', $token, time() + 14*24*3600, null, null, false, true);
} else {
echo $_COOKIE['token'];
}在您的示例中,当您刷新页面时,它将生成一个新的cookie,但echo $_COOKIE‘’token‘将显示939ec30ae568e2c8ee192a488cb6e646
https://stackoverflow.com/questions/64280518
复制相似问题