ゼロから始めるPHP講座Vol18 ファイル操作の使用例と演習


ゼロから始めるPHP講座Vol18 ファイル操作の使用例と演習
目次
  1. ゼロから始めるPHP講座ファイル操作の使用例と演習
  2. ファイル操作の使用例
  3. IPアドレスとは
  4. 補足.その他のファイル操作関数
  5. 課題

ゼロから始めるPHP講座ファイル操作の使用例と演習

ファイル操作の使用例

ファイルの読み込みや書き込みは、データの保存方法の1つとしてよく使われています。


<?php

$filename = './access_log.txt';

$log = date('Y-m-d H:i:s')     . "\t" .
       $_SERVER['REMOTE_ADDR'] . "\t" .
       $_SERVER['HTTP_USER_AGENT'] . "\n";

if (($fp = fopen($filename, 'a')) !== FALSE) {
    if (fwrite($fp, $log) === FALSE) {
        print 'アクセスログ書き込み失敗: ' . $filename;
    }
}

fclose($fp);

?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>トップページ</title>
</head>
<body>
    <h1>ここはPHPを学ぶページです</h1>

    <a href="">入り口</a>
</body>
</html>

php-files11-639

php-files12-639

インターネット住所IPアドレスユーザーエージェント

このような情報を保存することで、

  • 今日は何人がアクセスしてきたか?- ブラウザの種類の比率は?- 何時のアクセスが多い?- etc.

と、ページに訪れるユーザ情報の分析を行えます。

php-files13-639

はスーパーグローバル変数で、サーバー情報および実行時の環境情報が連想配列で定義されています。$_SERVER

現在ページをみているユーザーのIPアドレス$_SERVER[‘REMOTE_ADDR’]$_SERVER[‘HTTP_USER_AGENT’]

今回利用したのは$_SERVERに含まれる2つの値のみですが、その他にも様々な情報がこのスーパーグローバル変数にはあります。

リクエストメソッド名で‘GET’、‘POST’など$_SERVER[‘REQUEST_METHOD’]

$_SERVERにその他どんな情報が定義されていて、どのように利用するのかを現時点で覚える必要はありません。

IPアドレスとは

IPアドレスは0から255までの数字を4つ並べて表現する、インターネット住所です。

IPアドレス例

インターネットに接続している全てのコンピュータには、このIPアドレスが割り振られています。

php-files14-639

実はIPアドレスとphp.netは同じインターネット住所です。

元々インターネット住所にはIPアドレスが使われていたのですが、これだと人が覚えづらいということで、「php.net」のような文字列で書かれた住所にIPアドレスを置き換えて使える仕組みができました。

php.netのように文字列の住所を「ドメイン」と呼びます。

「IPアドレス=ドメイン」であり、同じインターネット住所となります。

IPアドレスとドメインの違いは、IPアドレスは必須で、ドメインは自由ということです。

個人のPCやスマートフォンなどもインターネットに接続するにはIPアドレスが必要ですが、ドメインは必要な場合のみ利用します。

サービス利用側がIPアドレスを意識することは通常ありませんが、提供側の場合はIPアドレスやドメインについて考える必要があります。

補足.その他のファイル操作関数

ファイル読み込みや書き込みには様々な関数が用意されています。

例えばfile_get_contents関数は、ファイル内容全てを文字列として取得できます。php-files15-639

fopen関数やfclose関数は必要なく、1度でファイル全体を読みます。

非常に便利ですが、「行によって色を変えたい」、「一部のデータは表示しない」など、取得したデータの加工には不向きで、ファイルの中身をそのまま利用したいときに使います。

この他にもfile関数、readfile関数、fgetcsv関数、file_put_contents関数など、多数のファイル操作を行うための関数があり、用途によって使い分けを行います。

課題

テキストボックスの値をPOSTで送信し、日時とユーザが入力した値を1行ずつファイル(challenge_log.txt)に保存し、ページ下部にファイル内容を1行ずつ表示するプログラムを作成してください。

php-files16-639

NEXTLESSONデータベースとはデータベースとは

PREVLESSONファイル操作の基礎ファイル操作の基礎


CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp