KUNISAN.JPブログ - 244 / 1691 ページ

新規書き込み
ページ:1 ... 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 ... 1691

さくらレンタルサーバーのアクセス履歴をPHPで表示

名前: 小川 邦久 リンク: https://kunisan.jp 日付: 2018年11月18日
さくらレンタルサーバーのアクセス履歴をPHPで表示以前のSuiteXサーバーでは、MySQLを使ってウェブサイトのアクセス履歴を管理していました。ほんのたまにいたずらのような行為があったりしましたが、すぐさまIPアドレスを特定してブロックをかけることもできました。

さくらレンタルサーバーに移行してからは、PHPのバージョン違いで以前のMySQLを操作するプログラムが動作しなくなり、アクセス履歴の管理はさくらの標準的な機能とGoogleアナリティクスに頼っていました。ただ、「どのIPアドレスから何時何分何秒にどのページにアクセス」のような細かいデータは得られず、集計した後のデータしか参照することができませんでした。

このさくらのアクセス履歴ですが、レンタルしているWebサーバーにデータファイルが保存される形で、FTPでもアクセスすることができます。ファイル形式は".gz"拡張子が付いたもので、中のテキストファイルを開くには、一旦ファイルを解凍しないといけません。ちなみに、このファイルは集計される前の生のデータが入っています。

PHPにgzファイルを解凍せずに中のデータを取り出せる命令があるので、それを使った自作のプログラムでさくらのアクセス履歴データを直接閲覧できるようにすることにしました。さらに、簡易的な検索機能(And条件の複数語検索対応)も付けてみることにしました。

セキュリティの関係で、プログラム全体を公開することはできませんが、肝となる部分は以下のようになっています。

■ アクセス履歴ファイルの読み込みと複数語による検索
//検索ワードの取得
$words = $_GET['WORD'];

//各検索ワードの配列化(スペースで区切り)
$words = mb_eregi_replace(' ',' ',$words);
$words_search = explode(' ',$words);

//gzファイルの展開と読み込み
$raw_contents = stream_get_contents(gzopen(xxxxxxxxxx.gz', 'rb'));

//各行を配列化
$contents = explode("\n", $raw_contents);

//配列数(行数)だけ繰り返し
foreach ($contents as $line) {
$search_flag = 1; //表示フラグ
//配列数(検索ワード数)だけ繰り返し
foreach ($words_search as $search) {
if ($search != '') { //空白処理せず
if (!stristr($line, $search)) { //検索ワード含まれない場合
$search_flag = 0; //表示フラグをゼロにする(非表示)
}
}
}
//表示フラグが立ったままであれば表示
if ($search_flag == 1) {
print $line;
}
}
これでサイトへのいたずら行為等、何らかの問題があった場合にはある程度迅速に対処できるようになりました。とは言っても、完璧な防御策というのはありえないので、やはり定期的なローカルへのバックアップが必要なのは変わらないですね。





Web管理関連記事(リンク一覧): SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / Webサーバー引っ越し(さくらインターネット スタンダード)とHTTPS(常時SSL)化 / ...(記事連続表示)

関連カテゴリー: PHP関連記事, Web管理関連記事


スラスラわかるPHP
スラスラわかるPHPをAmazon.co.jpでチェック

ページ:1 ... 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 ... 1691