基于时间的IP块与MySQL PHP

时间:2018-01-31 18:36:13

标签: php mysql arrays

我正在使用ajax来存储投票,并且目前正试图给已经投票一块18小时的每个IP Adresse。

首先我将IP和时间存储在数据库中,但我似乎无法弄清楚如何检查我的数组中是否找到了IP,然后是否与Ip相关的时间是匹配18小时加。

我正在为数据库中的每一行使用多维数组。 这是我到目前为止所做的,但我总是得到500或意外结束的JSON错误。

 $currentip = $_SERVER['REMOTE_ADDR'];
    $time  = date('Y-m-d H:i:s');
    $exptime = date('Y-m-d H:i:s', strtotime('+18 Hours'));

    // Check IP
    $sqlip = "SELECT ip,exptime FROM `user_ip` ;";
    $storedip = array();
     if ($result = $this->databaseConnection->query($sqlip)){
         while($row = $result->fetch_assoc()) {
             $storedip = array($row['ip'], $row['exptime']);
            }       

      if(in_array($currentip, array_column($storedip, '0'))){
      $key = array_search($currentip, array_column($storedip, 0));

        if($time <= $storedip[$key][1]){
            echo json_encode("IP Block active", JSON_PRETTY_PRINT);
         }
      } 
      else{

         $setip = "INSERT INTO `user_ip` VALUES ('$currentip','$exptime');";
          if($this->executeDatabaseQuery($setip)){
        // Count Vote and do my stuff
          }
         }
     }

1 个答案:

答案 0 :(得分:1)

你的问题在这里:

$storedip = array($row['ip'], $row['exptime']);

应该是:

$storedip[] = array($row['ip'], $row['exptime']);