データに不都合な文字列がある場合、整形してからファイルに書き込みます。
ファイルにデータを追加するプログラム
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。
僕が使っているサーバーとドメイン管理のレジストラーです。
§ファイルにデータを追加する
データに不都合な文字列がある場合、整形してからファイルに書き込みます。
データの下処理とファイル操作
ファイルにデータを追加するプログラム
if( $_POST [ "regist" ] != "" ) { //解説(1)
$NewLink = $_POST [ "link" ]; //解説(2)
$NewLink = str_replace ( "\n"‚ ""‚ $NewLink );
$NewLink = str_replace ( "\r"‚ ""‚ $NewLink );
$NewLink = $NewLink."\n";
$fp= fopen( "list.txt" ‚ "a" );//解説(3)
flock($fp‚ LOCK_EX);
fputs ( $fp‚ $NewLink );
fclose ( $fp );
print "登録しました";
}
?>
今回POSTで送られてくるデータは link と regist の二つです。
それぞれ $_POST["list"] と $_POST["regist"] で受け取ります。
解説(1)
「 != 」は左辺と右辺が等しくない(不等号)ということを表します。
つまり「 $_POST["regist"]の中身が空でなければ { } 内の命令を実行する」という意味です。
単純に if( $_POST["regist"] ) と書き換えることも出来ます。
解説(2)
送られたデータを下処理します。
フォームから送られるデータにはプログラムに影響を与える文字列が含まれる場合があります。
ファイルに書き込む前にこれらを削除(もしくは置換)して形を整えます。
今回問題になるのは改行ですね。
「\n」「\r」はどちらも改行コードです。
str_replace は文字列内の特定の文字を置換する関数です。
$NewLinkに改行コードが含まれる場合削除します。
str_replace ( "変更する文字列"‚ "変更後の文字列"‚ "対象になる文字列" )
最後に$NewLinkの末尾に「\n」を加えて完成です。
解説(3)
いよいよファイルに書き込みます。
fopen ("ファイルのパス"‚ "モード")
fopen関数はファイルを指定したモードで開き、ファイルハンドルを返します。
モードに「a」を指定するとファイルを書き込める状態で開き、ポインタを最後尾に置きます。
flock(ファイルハンドル‚ ロックの種類);
処理の間他の操作が出来ないようにファイルをロックしておきます。
fputs ( ファイルハンドル‚ "書き込む内容" );
指定したファイルハンドルのファイルに先ほど整形したデータ($NewLink)を書き込みます。
fclose ( ファイルハンドル )
ファイルを閉じます。
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。