2011-10-14 39 views
1

我已經創建了一個使用PHP的Web應用程序。我想知道從代理或客戶端應用程序中隨機生成的IP。我們的應用程序只允許每個IP地址一次點擊。 我使用$_SERVER['HTTP_USER_AGENT']檢查了用戶代理。我目前得到了用戶代理,但我想知道用戶代理是否使用任何其他工具動態生成IP地址 。是否可以使用代碼進行檢查?PHP如何從HTTP請求中檢測隨機生成的IP?

回答

0

你可以試試這段代碼:

if (
     $_SERVER['HTTP_X_FORWARDED_FOR'] 
    || $_SERVER['HTTP_X_FORWARDED'] 
    || $_SERVER['HTTP_FORWARDED_FOR'] 
    || $_SERVER['HTTP_CLIENT_IP'] 
    || $_SERVER['HTTP_VIA'] 
    || in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554)) 
    || @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30)) 
{ 
    exit('Proxy detected'); 
} 

來源:digitalpoint

+0

從哪裏獲得的變量$錯誤號和$ errstr的價值? 此代碼是否幫助我檢測IP是動態生成還是不? 有些時候客戶端使用代理服務器,我希望每個IP只允許一個請求(用於檢查) –

+0

請參閱http://php.net/manual/en/function.fsockopen.php,這些變量通過引用傳遞。此代碼將檢測用戶是否使用代理服務。大多數IP是動態生成的 - 至少是個人的。靜態IP主要用於公司。當你說動態生成時,我猜你的意思是使用代理服務? – Raisen

+0

非常有用的信息。如何使用PHP代碼檢測匿名代理服務器? –