アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、PHPで掲示板をメモ帳で作成しています。

今回は、よくよく分からないものを記載!

PHPタグ=================================
<?php
// 保存するログファイル名
$LOGFILE = "log.txt"; … (1)

// POST で mode = write の属性が送られていたら書き込み処理
if ($_POST["mode"] == "write") { … (2)
  $name = $_POST["name"]; … (3)
  $message = $_POST["message"];
  $date = date("Y/m/d H:i:s"); … (4)
  if (file_exists($LOGFILE)) { … (5)
    $lines = file($LOGFILE); … (6)
  }
  $fp = fopen($LOGFILE,"w"); … (7)
  fputs($fp,"$name,$message,$date\n"); … (8)
  for ($i=0;$i<count($lines);$i++) { … (9)
    fputs($fp,$lines[$i]); … (10)
  }
  fclose($fp);
}
?>

PHP 解説よくよく分からない===========
(1) では変数で説明した変数に保存するファイル名を指定しています。ファイル名は保存、読み込みのところで複数回つかうので使いまわしできるように変数に入れています。

(2) では前ページで説明した、
<input type="hidden" name="mode" value="write">
でフォームから送られる情報を $_POST["mode"] で受け取って、その値が "write" かどうかチェックしています。
「投稿する」ボタンを押してサーバに情報が送信される際に mode=write も送られていますので、それを if文で判定しています。通常のアクセスでは mode=write が送られないため、書き込み処理を行わないという感じです。

(3) では(2)同様、フォームから送られた name の情報を受け取って $name という変数に入れています。

(4) では現在の日付を取得しています。PHPには date 関数という代物があって簡単に現在の日付を取得できます。

(5) ではファイルが存在するかチェックしています。
file_exists関数でファイルが存在するか調べています。

(6) では file 関数によって配列にデータをすべて入れています。なぜここでデータを変数に入れるかというと、新しく投稿されたデータを1行目に書き込んで、残りに古い情報を書き込むためです。

なまえ,メッセージ,2005/02/06
なまえ,メッセージ,2005/02/06
なまえ,メッセージ,2005/02/06
青が新しく投稿された情報で赤が元々保存されていたふるい情報

(7) ではこれから書き込むのでfopen関数でファイルを書き込みモードで開いています。

(8) では開いたファイルにfputs関数で書き込んでいます。名前、メッセージ、日付をカンマ区切りで1行にしてファイルに書き込んでいます。

(9),(10) では古いファイルの情報(投稿前に書き込まれていた情報)を書き込んでいます。これを行わないと、新しく投稿された情報は書き込まれますが、古い情報が消えてしまうのでこの処理をしています。

PHPの解説でよくわからないので、お答えしてください。
  

                                 ♪♪宜しくお願いします。♪♪

A 回答 (3件)

提示されたソース自体、(個人的には)実用性から見れば問題ありすぎて「こんなもの使うな!」と言いたくなるぐらいですが、流れの理解をするためならシンプルで優れている面もあるので、100歩譲ってナシではないでしょう。

しかし、解説も付けてくれてあるのにこれを「全てわからない」と言われたらもう救いようがないです。諦めるかお金払ってパソコンスクール通ってくださいとしか言えません。
    • good
    • 0

どの部分が「よくわからない」のですか?



もし「全部わからない」のであれば、さすがに手に負えません。phpの習得は諦めてください。

この回答への補足

PHP 解説よくよく分からない===========から下が中々分かりません。解説を宜しくお願いします。

補足日時:2013/10/24 16:19
    • good
    • 0

質問がないよ?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!