特定の情報を学内だけに公開したい場合に,アクセス制御が必要になります。しかし,学外からでも単に「エラー」と表示するのではなく,何らかの別の情報を表示したいことがあります。そのためには,次のようにして閲覧者のIPアドレスを調べます。
あなたのIPアドレス 38.107.179.240 は学外のものです
<p>
<?php
$x = $_SERVER['REMOTE_ADDR'];
echo "あなたのIPアドレス $x は";
if (strncmp($x, "133.67.", 7) == 0 || strncmp($x, "10.", 3) == 0)
echo "学内のものです";
else
echo "学外のものです";
?>
</p>
三重大学では 133.67.* と 10.*
をアドレスとして使っています(*
は任意の値)。それ以外のアドレスは学外です。strncmp(A, B, n)
は A と B
の最初の n 文字を比較し,一致していれば 0 を返します。
echo "..." の中に書くものが多いと,上の書き方では面倒です。
次のような書き方が便利です。
<p>
<?php
$x = $_SERVER['REMOTE_ADDR'];
if (strncmp($x, "133.67.", 7) == 0 || strncmp($x, "10.", 3) == 0)
echo <<<EOT
あなたは学内からですね。
あいうえお
かきくけこ
EOT;
else
echo <<<EOT
あなたは学外ですね。
さしすせそ
たちつてと
EOT;
?>
</p>
ここでは EOT という文字列を区切りに使いましたが,文章中に現れないことばなら何でもかまいません。
あるいは次のようにもできます。
<?php
$x = $_SERVER['REMOTE_ADDR'];
if (strncmp($x, "133.67.", 7) == 0 || strncmp($x, "10.", 3) == 0) {
?>
<p>あなたは学内からですね。あいうえおかきくけこ。</p>
<?php
} else {
?>
<p>あなたは学外からですね。さしすせそたちつてと。</p>
<?php
}
?>
パスワードによる認証については ユーザ認証 のページをご覧ください。
Last modified: 2009-08-04 17:05:58