PHPを学ぼう!

▼PHPを学ぶチャプターです。


660円から使える!

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめてのHP | 無料素材 | タグ辞典 | CSSガイドEX | PHPを学ぼう!

◆Chapter 4 - CSV対応のログファイルを作る 2

前章の『 Chapter 4 - CSV対応のログファイルを作る 1 』で紹介しましたプログラムに以下の機能を追加します。

  • 月別にログファイルを作成する
  • ログ(CSV)ファイルの1行目にタイトルを追加する

 

追加するプログラムの仕組みは大まかに次のとおりです。

  • 月別のログファイル名を作成する
  • 当月かどうかをログファイルで判断する
  • 当月ファイルが存在したら、CSV ファイルに情報を追加する
  • 当月ファイルが無ければ、CSV ファイルを作成し見出しと情報を追加する

 

どうですか?
どんな風に作ればいいのかイメージができたでしょうか?
参考のプログラムを用意しましたが、もしかしたらイメージと少し違うかもしれませんね・・・。
プログラムは作る人によってイメージが違ってきます。
これが一般的に言われる開発者の曲というものなのでしょう。
では私が改変したコードに沿って説明していきましょう。

 

プログラムを参考例として作成しました。
このコードに沿って説明していきます。

 

【log.php】

01|<?php
02|function LogRecorder($dir){
03|  //REMOTE_HOSTがなければgethostbyaddrで取得
04|  if(!isset($_SERVER['REMOTE_HOST']) || $_SERVER['REMOTE_HOST'] == ''){
05|    $_SERVER['REMOTE_HOST'] = gethostbyaddr($_SERVER['REMOTE_ADDR']);
06|  }
07|  $_SERVER['HTTP_REFERER'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
08|
09|  //値のarray化
10|  $array = array(
11|    'date' => date("Ymd"),
12|    'minutes' => date("H:i:s"),
13|    'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'],
14|    'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'],
15|    'REMOTE_HOST' => $_SERVER['REMOTE_HOST'],
16|    'HTTP_REFERER' => $_SERVER['HTTP_REFERER'],
17|    'HTTP_ACCEPT_LANGUAGE' => $_SERVER['HTTP_ACCEPT_LANGUAGE']
18|  );
19|
20|  //▼ CSVファイル 1行目タイトルの設定
21|    $month_file = "log".date("_Ym").".csv";
22|    $clum_title = array(
23|    "日 付",
24|    "分 秒",
25|    "ユーザーエージェント",
26|    "IPアドレス",
27|    "ホスト名",
28|    "参照ページ",
29|    "言 語"
30|  );
31|
32|  $file_name = $dir."log_".date("Ym").".csv";
33|  if(file_exists($file_name)){ $file_result="TRUE"; }else{ $file_result="FALSE"; }
34|  $file = fopen($file_name, "a+");
35|  if($file){
35|    if($file_result=="FALSE"){
37|      mb_convert_variables('SJIS-win', 'UTF-8', $clum_title);
38|      var_dump(fputcsv($file, $clum_title));
39|    }
41|    mb_convert_variables('SJIS-win', 'UTF-8', $array);
42|      var_dump(fputcsv($file, $array));
43|  }
44|  fclose($file);
45|}
46|?>

 

赤文字の部分が機能を追加した箇所です。
21行目で月別のログファイル名を作成しています。
このファイル名が当月かどうかの判断をします。
何故、月別に分ける必要があるのかというと、

  • 月別にすることでファイルが分割できるので管理、加工がしやすくなる
  • アクセスが多いサイトの場合、1つのファイルでは膨大なログになる恐れがある

からです。

 

20~30行ではCSVの1行目に書き出されるタイトルを配列で設定しています。
これは、fputcsv 関数で配列を指定しなければならないからです。
タイトルは、データの配列に合わせて設定する必要があります。

 

33行目では、32行目で設定したファイルが存在するかどうかを判定し、変数 $file_result に結果を返しています。
ファイルが存在しないということは、今月最初のアクセスだと判断できるわけですね。

 

36~39行目は、変数 $file_result で返された値が TRUE なら CSV ファイルの1行目にタイトルを挿入する処理です。
そうでなければ、ログの情報だけを記録することになります。

を使って日付に対応した曜日を修得することができます。

 

如何でしょうか?
CSV ファイルの1行目のタイトルの設定、ファイルが存在するかどうかの判断、その判断に基づいて CSV への書き出し処理。
るだけの機能ができてしまいました。
意外と簡単に機能の追加ができたと思いませんか。

 

 

一括ダウンロード

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.