<?php function checkIfUserIsRateLimited($resource, $timeLimit = 10, $currentResLimit = 1) { $clientIP = $_SERVER['REMOTE_ADDR']; $ipHash = hash('sha256', "ratelimits-$clientIP"); $info = @file_get_contents('cache/'.$ipHash.'.json'); $info = json_decode($info, 1); if(!isset($info['resource'])) { $info['resource'] = $resource; } if(!isset($info['lastAccess'])) { $info['lastAccess'] = 0; } $lastAccess = $info['lastAccess']; $accessedRes = $info['resource']; $blockAccessTime = $lastAccess + $timeLimit; if($blockAccessTime > microtime(1) && $accessedRes != $resource) { return true; } $info['lastAccess'] = microtime(1); $info['resource'] = $resource; @file_put_contents('cache/'.$ipHash.'.json', json_encode($info)."\n"); if($lastAccess + $currentResLimit > microtime(1) && $accessedRes == $resource) { return true; } return false; }