日誌代碼:
xxx.com "GET HTTP/1.0" "http://newchat.flirt.ru/go.php?url=http://xxx.com/" "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16" 162.244.10.69.1412582961752120 yq28
使用$_SERVER["HTTP_REFERER"]系統變更無法擷取來路,輸入這個變數值為空白,這是怎麼回事?
如果你把 http://newchat.flirt.ru/go.php?url=http://xxx.com/這個網址後面的url參數換上你的網址,也可以跳轉到你的網站。
我現在目的是要屏蔽掉這些亂七八糟的來路訪問。
回複討論(解決方案)
$_SERVER["HTTP_REFERER"] 對url分析即可
$_SERVER["HTTP_REFERER"] 是擷取來源地址。
但如果使用者把url直接輸入在瀏覽器,並不是通過連結等跳轉到url的。
這樣$_SERVER['HTTP_REFERER']會為空白,因為沒有來源地址。
儲存為test.php
echo '';print_r($_SERVER);echo '
';
如果直接在瀏覽器輸入http://localhost/test.php 是擷取不到HTTP_REFERER的,
另外通過header跳轉的,也擷取不到HTTP_REFERER。
header('location:http://localhost/test.php');
?>
用你提供的網址測試了一下
[HTTP_REFERER] => http://newchat.flirt.ru/go.php?url=http://localhost/test.php
是拿到HTTP_REFERER的,
估計不是用header直接跳過來。
這樣就可以根據HTTP_REFERER判斷來源進行屏蔽了。
用你提供的網址測試了一下
[HTTP_REFERER] => http://newchat.flirt.ru/go.php?url=http://localhost/test.php
是拿到HTTP_REFERER的,
估計不是用header直接跳過來。
這樣就可以根據HTTP_REFERER判斷來源進行屏蔽了。
有點奇怪,為什麼我擷取到HTTP_REFERER是空的呢