2013-06-25 69 views
1

我試圖阻止基於網站的代理服務器。這些通常是在以下格式: http://3.hidemyass.com/ip-8/encoded/Oi8vZ29kbGV5ZGVzaWduLmNvLnVrL0xDcmVkaXJlY3QvZnVuY3Rpb25zL2Z1bmN0aW9獲取網址地址來檢測網絡代理

我的理論是阻止這些地址欄的網址,並檢查它實際上是直接訪問我的網站,而不是通過網站代理訪問。

但是,當我嘗試訪問我的網站並嘗試捕獲用戶的網址時,它仍然報告其網站地址..不是這個基於Web的代理服務器。

我試着檢測它有以下幾種:

$url= $_SERVER['HTTP_HOST']; //get the url 
$url = $_SERVER["SERVER_NAME"]; 

上的任何想法如何解決這個問題?

更新 好吧,我已經重寫了這個的一部分,但它似乎總是返回false ... $ url正在傳遞正確,因爲我可以在函數內回顯。但它似乎不匹配並返回false

<script> 
var url = window.location.href; 
<?php $url = "<script>document.write(url)</script>"; ?> 
</script> 

<?php 
// 
function checkURLIsSafe($url){ 
    if(preg_match('/www/',$url)){ 
     echo 'true'; 
    } else { 
     echo 'false'; 
    } 
} 
checkURLIsSafe($url); 
?> 

回答

1

PHP在服務器上運行。它只能看到從它請求的URL。

hidemyass.com將從您的服務器請求正常的URL。沒有辦法知道瀏覽器從hidemyass.com請求什麼網址。

一種方法,你可以採取包括:

  • 檢查對已知代理
  • 使用客戶端JavaScript的一個列表中的源IP閱讀location.href
+0

感謝您使用這種方法 - 現在有道理:) – user2183216

1

你不能用PHP做只。你可以做的是用javascript檢查window.location.href,如果不正確,發送一個Ajax請求到服務器,這將阻止IP地址。