2013-07-02 26 views
0

我有一個數據庫表,其中包含訪問該網站的用戶的IP地址。我正在嘗試爲一個頁面創建一個IP禁止系統。我希望被阻止從我的數據庫表中列出的IP列在無法訪問此特定頁面的IP數組中。我不斷收到錯誤,我無法弄清楚如何讓它正常工作。這是我使用至今:嵌入和使用數組中的數據庫信息

PHP:

$getBlockedUsers = mysqli_query($con,"SELECT ip FROM blog_comments WHERE blocked='yes'"); 
$separateIps = implode(", ", mysqli_fetch_array($getBlockedUsers)); 

if (in_array ($_SERVER['REMOTE_ADDR'], $separateIps)) { 
    header("location: http://www.google.com"); 
    exit(); 
} 
  • 我連接到數據庫中正確
+2

爲什麼不直接用'ip = $ _SERVER [REMOTE_ADDR]'搜索該行? – Barmar

回答

1
$getBlockedUsers = mysqli_query($con,"SELECT true FROM blog_comments WHERE blocked='yes' AND ip='" . $_SERVER['REMOTE_ADDR'] . "' LIMIT 1"); 

if ($getBlockedUsers->num_rows > 0) { 
    header("location: http://www.google.com"); 
    exit(); 
} 
+0

哇這是一個好主意。這似乎工作。非常感謝。 – Josh

0

取出implode功能,

$separateIps = mysqli_fetch_all($getBlockedUsers, MYSQL_NUM); 

in_array期望參數2是一個數組。當使用implode時,你將得到一個字符串而不是一個數組。

+0

這只是表中的一行,而不是所有的IP。 – Barmar

+0

@Barmar我很確定他的意思是'mysqli_fetch_all'。 – Leri

+0

我相信Barmar是對的。我需要測試這個。它已經刪除了錯誤。但我不確定這是否適用於所有IP。 – Josh