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対応のログファイルを作る 1

どんなプログラムでもデータを扱うと、その読み書きの処理が必要になります。
初心者を対象にした PHP プログラムの書籍の多くでは最初に作るプログラムとして掲示板の作り方を紹介しているものをよく見かけます。
これは掲示板のプログラムには基本的となる処理の要素が含まれているからでしょう。

 

データを保存する形式には主に、TXT ファイル、CSV ファイル、データベースファイルなどがあります。
単純にデータを登録したい、データの加工をしたい、エクセルなど他のソフトでも使いたいなど用途も様々です。
この章では、CSV ファイルで書き出すシンプルなログファイルプログラムの作り方を紹介します。

 

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

  • 設定の関数(コード)が読み込まれたらプログラムを動作させる。
  • 本日のタイムスタンプを修得。
  • ログ情報を修得。
  • CSV 形式のファイルにログ情報を書き足す。

 

ログファイルに必要な情報として次のものを使います。

  • ユーザーエージェント :
    $_SERVER['HTTP_USER_AGENT']
    アクセスしているユーザーの User_Agent のヘッダーが定義されている場合にはその内容を、そうでない場合には現在のページを見るために使用されているブラウザの種類を示します。
  • IPアドレス :
    $_SERVER['REMOTE_ADDR']
    アクセスしているユーザーの IP アドレスを示します。
  • ホスト名 :
    $_SERVER['REMOTE_HOST']
    アクセスしているユーザーのホスト名を示す。ISP 特有のホスト名が付いていることが多く、どの地域からアクセスしているのかの目安にもなる。
  • 参照ページ :
    $_SERVER['HTTP_REFERER']
    現在のページを参照してきたページアドレスを示す。 この変数はユーザーが利用するブラウザにより設定されおり全てのブラウザが利用できるわけない。
  • 言 語 :
    $_SERVER['HTTP_ACCEPT_LANGUAGE']
    アクセスしているユーザーの Accept-Language: ヘッダーを示す。ただし、該当するヘッダーがある場合のみ。

この他にも $_SERVER 変数(HTTP 変数?)が存在するので用途に応じて利用してください。
サーバー情報および実行時の環境情報

 

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

 

【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|    'HTTP_CONNECTION' => $_SERVER['HTTP_CONNECTION'],
19|  );
20|
21|  //▼ csvファイルの書き込み処理
22|  $file = fopen($dir."log.csv", "a+");
23|  if($file){
24|    mb_convert_variables('SJIS-win', 'UTF-8', $array);
25|    var_dump(fputcsv($file, $array));
26|  }
27|  fclose($file);
28|}
29|?>

 

このコードはアクセスを取りたいページに簡単に設置できるようカスタマイズ関数で制作しています。
アクセスを取りたいページにコードを書き込むこともできますが、利便性を考慮するとカスタマイズ関数で読み込み使うのが便利です。
ログを取りたいページには以下のコードを追加することで記録ができます。

<?php
  include_once("./acc/log.php");
  LogRecorder("./acc/data/");
?>

赤文字部分は、プログラムの設置状況に合わせてディレクトリ(パス)を変更してください。
LogRecorder では、どのページからでもログファイルのパスを指定できるようにしています。
パスが指定できることで階層の違うページのログを取ることができるのです。

 

3~7行では関数が存在しない場合の変数初期化しています。
$_SERVER['REMOTE HOST'] の値がない場合は、組み込み関数 gethostbyaddr を利用し、DNS に問い合わせて IP アドレスをホスト名に変換します。

 

10~19行では CVS として書き出す値を配列に格納しています。

 

22~27行は、CVS ファイルの書き出し処理です。
22行目の fopen 関数では、ファイルのパーミッションを "a+" にしています。
"a+" はデータを追加する場合に選択します。
24行目の mb_convert_variables 関数は、配列全体の文字コードを一括変換する処理です。
25行目の fputcsv 関数は、配列の内容をそのまま CSV ファイルに適した一行でデータを追加してくれます。
また文字列のクォート処理も自動で行ってくれます。
この機能はとても便利です。

 

サーバへの設置は次のとおりです。
ご利用の環境に合わせて変更ください。

[public_html]
 └ acc
    ├ data [属性: 777or755]
    └ log.php

"acc" のフォルダは必要に応じて属性を変更してください。

 

 

一括ダウンロード

 

 

 

 

 

 

 

 

 

 

 

 

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

▲UP

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