2014-10-10 79 views
0

我需要允许cookie投票5次。将IP设置为数据库我不能这样做,因为人们坐在同一个远程地址的网络中。从cookie中投票5次

有一次我检查是这样的:

if($dif_cookies == 1) //from DB 
     if($_COOKIE["m_questioning3-$external_id"] == $external_id) { 
      $q_show_status = 3; 
     } 

但我需要允许5次,怎么样?谢谢

+0

给每个cookie的唯一名称取代IP号码,并将该名称存储在数据库中用于比较 – Michel 2014-10-10 07:31:51

回答

0

亲爱Haroldas,

if(!isset($_COOKIE["m_questioning3-$external_id"])){ 
      $_COOKIE["m_questioning3-$external_id"]["count"] = 1; 
    }else{ 
      $_COOKIE["m_questioning3-$external_id"]["count"]++; 
    } 

    if($_COOKIE["m_questioning3-$external_id"]["count"]<=5){ 
      your work 
    } 

它会奏效。请检查一下。

+0

如何在提交后设置cookie? 现在我做的是这样的: setcookie(“m_questioning3- $ form_id”,$ form_id); $ external_id equal $ form_id – Haroldas 2014-10-10 07:44:46

0

感谢您的帮助,但我发现解决自己:

IM发送表决后提交后,并设置Cookie:

if (isset($_COOKIE["m_questioning3-$form_id"])) { 
    if ($_COOKIE["m_questioning3-$form_id"] <= 5) 
     setcookie("m_questioning3-$form_id", (int)$_COOKIE["m_questioning3-$form_id"]+1); 
} else { 
    setcookie("m_questioning3-$form_id", 1); 
} 

形式cheking cookie的值:

if ($dif_cookies == 1) 
    if($_COOKIE["m_questioning3-$external_id"] >= 5) { 
     $q_show_status = 3; 
} else {   
    switch ($q_form_type) { 
     //... bla bla bla ... 
}