php オリジン[前ページ]を取得するページ解析関数
この記事では、オリジン関数である前ページを取得するための包括的な関数を提供します。
function getref(&$ref,&$fullref) {
global $err,$conf,$HTTP_GET_VARS,$_GET;
if(isset($_GET['anr'])) $refer=$_GET[' anr'];
elseif(isset($HTTP_GET_VARS['anr'])) $refer=$HTTP_GET_VARS['anr'];
else $refer='unknown';
if(empty($refer)) $refer= '未定義';
if(!strcmp($refer,'null')) $refer='未定義';
$refer=urldecode($refer);
$refer=modsec($refer);
$refer=txtproc ($refer);
//バックスラッシュを修正する http://111cn.cnindex
$refer=str_replace("","/",$refer);
//不要な点を削除する http://111cn. cn.
$refer=preg_replace("//./",'/',$refer);
$refer=preg_replace("/.//",'/',$refer);
$refer=preg_replace( "/.*$/",'',$refer);
$refer=preg_replace("/("|')*$/",'',$refer);
//不要なスラッシュの重複を削除します http ://111cn.cn///
$refer=preg_replace("/([^:])(/)+/",'$1/',$refer);
$fullref=$refer;
$refer =preg_replace("/^(https?://)(www.)?/i",",$refer);
$ref=preg_replace("/[?|&|#|;].*$/ i",'',$refer);
$ref=preg_replace("/(/)*$/",'',$ref);
$ref=trim($ref);
$ref=preg_replace(" /.*$/",'',$ref);
$ref=preg_replace("/("|')*$/",'',$ref);
$ref=trim($ref);
// リファラー (悪い) をチェック
if(empty($ref)) $ref='unknown';
// ドメイン名で「.」を検索
if(!preg_match("/^([^./]+ .)+([^./])+/i",$ref)) $ref='未定義';
}
}