Wordpress中PHP代码的无限重定向循环


Infinite redirect loop from PHP code in Wordpress

我有一个PHP脚本,我将在下面发布。这是一个投票网站,我的客户只希望一个用户能够根据他们的cookie和IP地址投票一次。

投票一次后,如果检测到cookie或IP相同,它们将被重定向到允许多次投票的虚假投票页面。浏览器在合法投票页面和重复投票页面之间循环。

这是代码,我只是在收到这个错误并在网上看到这可能是原因后才添加了exit和die函数——然而添加这些函数并没有什么区别。

$q = mysql_query("SELECT * FROM votelog");
while($row = mysql_fetch_array($q))
{
     if(($ip = $_SERVER['REMOTE_ADDR']) == $row['ip'])
     {
            $duplicateIP = true;
     }//end if
     if(($row['pollid'] == 8))
     {
         $duplicatePoll = true;
      }//end if
   }//end while
   //check cookies
   if(isset($_COOKIE['poll']))
   {
       $cookieCheck = true;
    }//end if
     if((($duplicateIP == true) && ($duplicatePoll == true)) or ($cookieCheck == true)) 
     {
         show this pg
      }//end if
      else
      {
            echo '<meta http-equiv="refresh" content="0; url=/polls/legit" />'; //redirect to legal pg
      exit();
      die();
       }//end else

有什么想法吗?另一个页面是相同的,除了if和else被切换,如下所示:

     if((($duplicateIP == true) && ($duplicatePoll == true)) or ($cookieCheck == true)) 
     {
          echo '<meta http-equiv="refresh" content="0; url=/polls/dupe" />'; //redirect to duplicate
      exit();
      die();
      }//end if
      else
      {
          show this pg
       }//end else

p.S-我在Wordpress环境中操作

很难猜测那里发生了什么。但是,如果您的代码很好,我预计您会遇到缓存问题。

正确设置头(header())将有助于解决该问题。但要小心,你可以设置错误的标题,使情况变得更糟。

因此,一个简单的解决方法可能是添加一个?time()到您的url。因此,重定向后的URL每秒都会发生变化。

echo '<meta http-equiv="refresh" content="0; url=/polls/dupe?'.time().'" />'; //redirect to duplicate

只是附带说明:

exit();
die(); // this will never reached, as exit() and die() is the same

关于exit()和die()