KUNISAN.JPブログ - 524 / 1529 ページ

新規書き込み
ページ:1 ... 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 ... 1529

PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御)

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2014年2月15日

久しぶりのPHPネタです。簡易アクセスブロックプログラムを公開します。

・簡易アクセスブロックプログラムのダウンロード
acc_check.zip (index.html サンプルページ、error_check.php アクセス制御プログラム、error.php エラーページ)
※全ファイルをサーバー上の同一フォルダーに入れます。PHPが動作可能であることも条件です

例えば「特定の団体(会社など)やプロバイダーからのアクセスの場合、ホームページを表示しないようにしたい」という時に使えるプログラムです。メインの"error_check.php"の中身は以下の通りです。

■ error_check.php
<html>
<head>
<title>Error Check</title>
</head>

<body>
Error Check<br>

<?php

//クライアントのIPアドレス取得
$ip = $_SERVER['REMOTE_ADDR'];
//IPアドレスをホスト名に変換
$host = gethostbyaddr($ip);
//クライアントのUSER AGENT取得
$agent = $_SERVER['HTTP_USER_AGENT'];

if ((eregi('ocn',$host)||eregi('122.136',$ip))||eregi('NT 6.3',$agent)) {
print '
<script language="JavaScript">
top.location.href = "error.html";
</script>
';
}

?>

</body>
</html>


上記のプログラムは、「アクセス元のプロバイダーがOCN、またはIPアドレスに122.136が含まれる、またはWindows 8.1の場合」にエラー画面(error.html)に遷移する、という内容になっています。if文内の条件を変更することで、アクセスブロックする対象を変更することができます。例えば…、

if ((eregi('abc',$host)&&eregi('NT 6.3',$agent)) {

このように変更することで、「アクセス元がABC社かつWindows 8.1の場合」にエラー画面に遷移する、という形にできます。

このプログラムをアクセス制御したいページ(htmlファイル等)にiframeとして組み込むことで、該当のページを開いた時にアクセス制御のプログラムが実行される形になります。該当ページのファイルに、以下のように記述します(acc_check.zip内のindex.htmlを参照してください)。

<iframe src="errorcheck.php" style="margin: 0px; border-width: 0px; width: 1px; height: 1px; visibility: hidden;"></iframe>

簡易的なプログラムなので、知っている人ならアクセスブロックを回避するのも難しくはないですが、少なくとも「面倒くさいなあ…」と思わせることは可能です。





PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE) をAmazon.co.jpでチェック

ページ:1 ... 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 ... 1529