如何每隔x秒检查一次cookie的存在


How to check for existence of a cookie every x seconds

我的视频网站在视频广告上的点击率非常高。所以我正在为我的php网站创建一个附属程序插件。

要检查我的视频广告是否被点击,我需要检查是否存在cookie。所以我有
编写了一个php脚本,基本上检查循环中是否存在cookie。

我知道用户可以随时点击视频广告,所以我认为使用循环是个好主意。事实证明,如果我打开了循环,在满足循环条件之前,页面的其余部分不会加载。所以我想每隔一分钟左右就做一次检查,但我不知道怎么做。无论如何,我认为我已经说得够多了。下面是我编写的php代码。

$cookie1= $_COOKIE['PBCBD2A0PBP3D31B'];
$cookie2= $_COOKIE['PBC0622FPBP3D31B'];
$cookie3= $_COOKIE['PBC669C9PBP3D31B'];
$count= "1";
while ($count >0 )
{
if (isset($cookie1) || isset($cookie2) || isset($cookie3))
    {$count= "0"; echo "You clicked on an AD";} else{$count= "1";}
}

使用javascript onclick事件运行AJAX调用,检查cookie的存在。

这是PHP与JavaScript的一个基本问题。

如果你想使用PHP每分钟检查一个cookie,你必须每分钟刷新一次页面。这显然是非常不经济的,原因有很多,其中最不重要的是,您正在使用服务器端代码在客户端检查某些内容——强制每分钟刷新一次页面。

根据您对想要做什么的描述,我建议使用JavaScript来检查cookie(链接中的页面显示了如何制作和检查测试cookie;根据您的需要进行修改),并使用setInterval()运行此功能。

您的方法将不起作用。PHP用于生成响应(即构成页面的html、javascript等)。生成后,将响应发送给用户,并完成PHP脚本。由客户端(想想JavaScript)来通知您任何用户操作。你可以添加一个onclick事件,向你的服务器发送一个新的请求,让你检测广告点击。

使用ajax和setInterval函数

setInterval(function(){
    $.ajax({
         type:"POST",
         url: "the_php_that_checks_cookie.php",
         data:"check=true",
         success:function(data){
               //alert the message sent by the php file
               alert(data);
         }
    });
},5000);

每5秒发送一次ajax请求,在您的PHP文件中,

if(isset($_POST['check']){
    $cookie1= $_COOKIE['PBCBD2A0PBP3D31B'];
    $cookie2= $_COOKIE['PBC0622FPBP3D31B'];
    $cookie3= $_COOKIE['PBC669C9PBP3D31B'];
    $count= "1";
  while ($count >0 )
    {
      if (isset($cookie1) || isset($cookie2) || isset($cookie3))
      {$count= "0"; echo "You clicked on an AD";} else{$count= "1";}
    }
}

我同意Matt的观点。你最好只在cookie可能发生变化的情况下(当他们点击视频时)检测cookie。然而,这取决于具体情况。你是在设置cookie,还是由外部网站在点击广告时设置cookie?

编辑:

你的两个目标似乎是:

  1. 根据附加到用户
  2. 记录哪些用户点击哪些广告

如果你用PHP生成所有广告并将其提供给用户,那么在选择要显示的广告之前,请检查用户的cookie一次,然后从那里开始。

如果你用javascript在页面中放置广告,你应该在每次刷新广告时检查javascript中的cookie。

无论如何,放弃循环。只需在广告发布前直接检查cookie即可。

为了确定哪些用户点击了哪些广告,您应该检测javascript中的点击,并使用AJAX将其记录到您的服务器上。