我正在使用 ajax 来存储投票,目前正在尝试为每个已经投票过的 IP 地址提供 18 小时的区 block 。
首先,我将 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
}
}
}
最佳答案
您的问题在这里:
$storedip = array($row['ip'], $row['exptime']);
应该是:
$storedip[] = array($row['ip'], $row['exptime']);
关于php - 使用 MySQL PHP 进行基于时间的 IP block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48549231/