現在のURLやファイル名の取得とリファラーの取得方法

2012-10-24 04:41:53
システムを構築中に今現在のURL(自身のURL)やファイル名を取得したいというケースがちょくちょく出てきます。サーバ環境変数に格納されているので取得は簡単です。
<?php
/*
現在のURLが以下だった場合
http://blog.pinkmonky.net/test.php?id=47&cate=5
*/

echo $_SERVER['SERVER_NAME'];
echo $_SERVER['REQUEST_URI'];
echo $_SERVER['PHP_SELF'];
echo $_SERVER["SCRIPT_NAME"];

//表示結果
blog.pinkmonky.net
/test.php?id=47&cate=5
/test.php
/test.php
?>
SERVER_NAMEとREQUEST_URIを使えば現在のURLを完全に取得できます。
<?php
echo 'http://'.$_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'];

//表示結果
http://blog.pinkmonky.net/test.php?id=47&cate=5
?>
あと、現在のページはどのページから飛んできたのかというを知りたい場面もよく出てきます。それをリファラーといいます。アクセス解析のシステムでは重宝します。
<?php
echo $_SERVER['HTTP_REFERER'];

//結果
http://blog.pinkmonky.net/test.php?id=47&cate=5
?>
リファラーは他ドメインの場合もあるのでURL全てが取得されます。そして、URLをパース(解析)する関数もあります。
<?php
$url = 'http://blog.pinkmonky.net/test.php?id=47&cate=5';
print_r(parse_url($url));

//表示結果
Array
(
[scheme] => http
[host] => blog.pinkmonky.net
[path] => /test.php
[query] => id=47&cate=5
)
?>

カテゴリ: PHP