リンクをたどってきた場合,$_SERVER['HTTP_REFERER']
を調べれば,一つ前のページのアドレスがわかります。
あなたはリンクをたどらずにこのページに来ましたね
<p>
<?php
$x = $_SERVER['HTTP_REFERER'];
if (isset($x)) {
$x = htmlspecialchars($x);
echo "あなたは $x のリンクをたどって来ましたね";
} else {
echo "あなたはリンクをたどらずにこのページに来ましたね";
}
?>
</p>
htmlspecialchars() を使う理由については
セキュリティ上の配慮
をご覧ください。
非常に古いブラウザでは,リンクをたどらなくても,直前のページのアドレスがこの方法でわかってしまう場合があります。「REFERER漏れ」で検索してみてください。
ブラウザの銘柄です。
あなたのブラウザは CCBot/1.0 (+http://www.commoncrawl.org/bot.html)ですね?
<p>あなたのブラウザは <?php echo htmlspecialchars($_SERVER['HTTP_USER_AGENT']) ?> ですね?</p>
このようなWebサーバから渡される変数には,ほかに次のものがあります。
$_SERVER['HTTP_ACCEPT_LANGUAGE'] …… 言語:
en-us,en;q=0.5$_SERVER['REMOTE_ADDR'] …… ユーザのIPアドレス:
38.107.179.239PHP で「戻る」リンクを実現するには次のようにします。
<?php
if (isset($_SERVER['HTTP_REFERER']))
echo '<a href="', htmlspecialchars($_SERVER['HTTP_REFERER']), '">[戻る]</a>';
?>
もし直接 URL をアドレス欄に打ち込んでこのページに来たなら,[戻る]は表示されません。
ブラウザによって表示するページ内容を変えてみましょう。
ブラウザの種類は $_SERVER['HTTP_USER_AGENT']
に入っています。
いくつかのブラウザでどのようなものが入るか調べ,それによって条件判断しましょう。
たとえば
<?php
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
/* Microsoft Internet Explorer の場合 */
} else {
/* それ以外 */
}
?>
あるいは
<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
if (strstr($ua, "DoCoMo")) {
/* DoCoMo携帯の場合 */
} elseif (strstr($ua, "SoftBank") || strstr($ua, "Vodafone") ||
strstr($ua, "J-PHONE") || strstr($ua, "MOT-")) {
/* SoftBank携帯の場合 */
} elseif (strstr($ua, "KDDI") || strstr($ua, "UP.Browser")) {
/* au携帯 */
} elseif (strstr($ua, "WILLCOM") || strstr($ua, "DDIPOCKET")) {
/* WILLCOM */
} else {
/* それ以外 */
}
?>
のようにします。
strstr() は文字列(string)中の文字列を探す関数です。
$_SERVER['HTTPS'] というサーバ変数の値が on
であれば,SSL(暗号化)プロトコルでそのページを見ていることになります。
<?php
if (isset($_SERVER['HTTPS'])) {
echo "このページから送信される情報は暗号化されます。";
}
?>
SQLite を併用してブラウザの種類を数える方法は ブラウザの統計 のページに移しました。
Last modified: 2009-08-04 10:18:37