2013-11-25 20 views
0

固定IP檢查PHP

$result = mysqli_query($mysqli,"SELECT * FROM ".MYSQLBTCTABLE." WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND date = '".date("Y-m-d")."' AND time = '".date("D")."'") or die(mysqli_error()); 

我怎樣才能確保$_SERVER['REMOTE_ADDR'],因此會檢查不僅用戶IP /代理也是襪子IP標準,使它們不能改變IP濫用我的代碼?

還我發現這個代碼:

   function getRealIpAddr() 
{ 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet 
    { 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy 
    { 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else 
    { 
     $ip=$_SERVER['REMOTE_ADDR']; 
    } 
    return $ip; 
} 

將它的工作,所以如果我把WHERE ip = '".($ip)."'

+0

您的代碼是錯誤的。使用反引號(或者什麼也不用)來包圍表名。 –

+0

..我已經從這裏刪除的反引號你沒有看到有等?問題是關於remote_addr – Voodoo22

+0

是的,但是你的代碼會導致語法錯誤。 –

回答

2

你不能這樣做,在通常情況下

  • 你不能肯定,如果用戶是使用代理服務器:它可以是匿名代理
  • 你不能肯定他是否使用計算機設備
  • 你不能確定他是人類的:它可能是通過cURL請求或者類似的東西

所以這就是互聯網的現實。你不能依賴來自客戶端的任何信息。如果您懷疑該用戶更改了他的IP地址 - 那麼在驗證後隱藏關鍵部分。因此,您可以通過登錄您的網絡應用程序來識別用戶。

+0

是的,但我可以肯定,他們會很難找到一個新的襪子代理:)也是我已經找到了答案之前的時間,但我忘了在這裏提到它 – Voodoo22