掲示板などの記録で1つのファイルに複数の記事を保存していく場合、
各行を配列の1要素として扱うようにしていると、改行コードの部分で
ログが改行してしまい、ログが破損してしまう事になります。
後でHTMLページとして表示する場合は、先に改行コードを <BR>タグ
に置き換えてしまうと良いです。
下のソースは改行コードの置換え処理を行わなかった場合のソースです。
【フォーム入力からファイルに書き出す】 では一行の入力フォームでしたので、改行コードの
除去は必要ないように思えますが、これが複数行のフォームの場合、書き出し処理で保存
されたファイルは、改行コードの部分で複数の行になってしまいます。
次に記録ファイルを読み出す時は、一行を配列の1要素として扱いますので、このように改行
されてしまうと、正しく記録を扱う事ができなくなります。
【除去を行わない場合のオリジナルソース】
【改行コードを<BR>タグに置き換る処理を追加したソース】
ソース中段付近の #改行コードを <BR>タグに置き換える の下にを一行足したのみです。
このように、改行コードが含まれるかもしれない部分 (例えば掲示板の本文など)
のみに
この処理を追加すれば結構です。


改行コードは下のように違いがありますので、どの場合にも正しく排除できるように
しておかなければいけません。
Windows CR + LF
UNIX LF
MAC CR
先に \n や \r を排除するような処理にしてしまうと、 \r\n のコードの場合に、それぞれ
が<BR>に置換えされてしまう為、 <BR><BR> となってしまいます。
必ず先に \r\n を置き換えた後、 \r や \n の置換え処理を行って下さい。

説明を省く為にお名前の欄の改行コードを置換えするようにしましたが、例えば悪意のある人
が別の自作フォームから投稿した場合には、ありえない要素で改行があるかもしれません。
別のフォームからの投稿を排除するか、一応全ての改行を変換した方が良いかもしれません。
|