2017-01-27 44 views
-5

我有一個自定義api頁面。我如何限制IP地址的請求數量?PHP - 如何評價一個API的限制?

我需要在PHP中的一些例子,我對此沒有太多經驗。

我正在運行apache2服務器。

+0

那麼,這類問題應該包括某種代碼或者什麼東西來證明你在不斷的研究並且盡力而爲。 – manix

+1

記錄IP,請求數和時間/日期...?檢查特定IP的日誌,並與配置的配額進行比較,無論是每日,每週,每月等。此實現可能從微不足道(如我已佈局)到複雜。你有什麼要求? –

+0

從基礎開始。你知道如何獲得IP嗎?你知道如何將它們存儲在數據庫中嗎? –

回答

0

您可以獲取調用API的人的IP並將其上載到插入IP和提交時間的數據庫中。然後,在您的API頁面頂部,驗證訪問者的IP(我不確定這是否適用於cURL,但您可以使用$ _SERVER ['remote_addr']),並且如果它存儲在數據庫,驗證是否從提交中傳遞了一個小時。在這種情況下,您可以刪除記錄。如果沒有,讓訪問者進行API調用並將其IP插入數據庫。

<?php 
$conn = new mysqli(host,user,password,database); 
$sql = "SELECT * FROM ip"; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { 
    if($row['ip'] == VISITOR'S IP) { 
     --GET THE TIME OF THE IP SUBMISSION-- 
     if($time > 1hour) { 
      $sql = "DELETE FROM ip WHERE ip="$row['ip']; 
      --LET API WORK-- 
     } 
    } 
} 
$sql = "INSERT INTO ip (ip) VALUES (--VISITOR'S IP--)"; 
$result = $conn->query($sql); 
if(!$result) { 
    echo "SQL Error : ".$sql."<br> Error : ".$conn->error; 
} 
else { 
    $conn->close(); 
} 
?> 

我希望這會幫助你。乾杯!