PHPを学ぼう!

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

 

 

 

quetion

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

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

↓↓↓ ↓↓↓

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

中古価格
¥1から
(2018/7/21 10:07時点)

 

 

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

↓↓↓ ↓↓↓

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

中古価格
¥525から
(2018/7/21 10:09時点)

 

 

当サイトはロリポップを利用しています。
高機能ながら安価な料金で利用できるのでお勧めです。

↓↓↓ ↓↓↓

 

 

ドメインを取るならここ!
69円~独自ドメインが取れます。

↓↓↓ ↓↓↓

おサルさんでもわかる?ホームページ作り! | htmlタグ辞典+css



◆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 への書き出し処理。
るだけの機能ができてしまいました。
意外と簡単に機能の追加ができたと思いませんか。

 

 

一括ダウンロード
>>>警告が出る場合


 

 

 

 

 

SSLに対応していません。

 


 

 


 

【関連サイト・リンク】

PHPを学ぼう! htmlタグ辞典+css おサルさんでもわかる? ホームページ作り! パワーポイントでYouTube動画を作る! 準備中 準備中 準備中

▲UP

Copyright (C) Ooedo21.com 2018. All Rights Reserved.

+