ファイルに1行しか書いていないのに2回読まれる - PHPプロ!Q&A掲示板
キーワード / 1回、余分に読まれる   1行の書き込みは、改行「\n」で終了   !feofでファイルの終了を判定  
別のHTML入力画面からデータを取得して、
ファイルに書き込んでいます。
<?php
#データを取得する
$name = $_POST["name"];
$mail = $_POST["mail"];
$title = $_POST["title"];
$message = $_POST["message"];
# 日本語表記の日時を得る
$time = date("Y/m/d l H:i:s");
# データを1行にまとめる(項目の区切りは%)
$data = $time."%".$name."%".$mail."%".$title."%".$message."\n";
# 追加書き込みモードでファイルを開く
$handle = fopen("bbs","a") ;
flock($handle, LOCK_EX);
fwrite($handle,$data);
#ファイルをアンロックする
flock($handle, LOCK_UN);
fclose($handle);
#?>
2)ファイルから読み込むプログラム
1)で書き込んだファイルから1行ずつ読み込み、表示し、
ファイルが終了するまで継続しています。
このとき、1行余分に、読み込まれます。
すなわち、while(!feof($handle))で、1回余分にループしていることになります。
なぜでしょうか。
# 読み込みモードでファイルを開く
$handle = fopen("bbs","r") ;
#ファイルの最後まで読み込む
while(!feof($handle)){
#1行読み込む
$line=fgets($handle);
#1行の文字列を「%」で分解して項目と取り出す
$word=explode("%",$line);
$time=$word[0];
$name=$word[1];
$mail=$word[2];
$title=$word[3];
$message=$word[4];
# 1件分のデータを表示する
print <<< HTML
<HTML>
<HEAD>
<TITLE>(^_^)</TITLE>
</HEAD>
<BODY>
<TABLE width="500" cellpadding="10" bgcolor="wheat">
<TR>
<TD>
<B>$time</B> <B>$title</B><BR>
<FONT color="green">$name</FONT>
<IMG src="email.gif" align="middle" hspace="5">
<A href="mailto:$mail">$mail</A><BR>
<BR>
$message
</TD>
</TR>
</TABLE>
<P>
</BODY>
</HTML>
HTML;
}
fclose($handle);
よろしくお願いします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。