未按照规定在PHP中的cookies(Failing to set cookies in PHP)

2019-10-17 21:52发布

我写了一个PHP脚本,这需要从网站并将其存储在一个表中有关访问者的IP和浏览器的信息在我的数据库。 该脚本包含在头部,并每隔各页面加载时间,谷歌分析类型的事情。 survey.php

我想这段代码只针对网站的每个新的访问者运行,所以我只记录每个新的访问者。

我想这是通过设置一个cookie来实现,所以我写了这个其他代码设置cookie,然后包括survey.php只有当不存在的cookie。 我用的isset函数,如果它不存在,但它不设置cookie并运行在每个负载脚本运行if语句。

基于它在说手动我看不到的地方,我错了。

<?php 
if(!isset($_COOKIE['Name'])){
    setcookie("Name");
    include ('survey.php');
}
?>

编辑:我添加了一个值,与多个用户进行了测试,和脚本仍然运行每个负载。 不知道为什么。

Answer 1:

给你的cookie的值:

$value = 'something from somewhere';

if(!isset($_COOKIE['Name'])){
  setcookie("Name", $value);
  include ('survey.php');
}

鉴于这是识别新用户,使用“0”或“1”就足够了。

如果你想在cookie来在未来到期点:

setcookie("Name", $value, time()+604800);  /* expires in a week */

编辑:

我已经试过这在一个简单的页面下面的代码:

<?php 
  if(!isset($_COOKIE['Test'])){

    setcookie("Test", '1');
    echo "Cookie set";
    //include ('survey.php');
  }
?>

我得到的“设置cookie”一次,然后不会再看到它在随后的刷新。 我还可以看到在控制台上的cookie:

Test | 1 | www.domain.com | / | Session | 5

唯一潜在的问题(如你正在使用不同的用户)是这个cookie设置为这里当前会话,所以设置它的到期遥远的未来将是很好的持久性,并会防止你的用户很快看到您的调查随时随地:

<?php 
  if(!isset($_COOKIE['Test'])){

    //Expires on 31 december 2015
    setcookie("Name","1",mktime (0, 0, 0, 12, 31, 2015));
    include ('survey.php');
  }
?>


Answer 2:

1)尽量像这样$值=“测试”的cookie设定值; setCookie方法( “TestCookie”,$值);

2)检查浏览器是否启用了Cookie



Answer 3:

为了设置一个cookie,或者更确切地说,以获取发送到从PHP用户的cookie,你需要给它一个值。 浏览器(至少大部分现代的)取一个空饼干头作为以清除任何cookie的,他们与这个名字。

所以,很显然,它不会被进一步请求发送,如浏览器,而不是将其设置为空,丢弃它。

给它一个随机的,短的价值和你所有的问题就会迎刃而解:

setcookie("Name",rand(1,10));

或类似。



Answer 4:

解决

我是包括代码作为第一代码段而不是在第一行。

设置Cookie A码的一切之前开始,1号线。

发布这让其他人可以受益。



文章来源: Failing to set cookies in PHP