質問: やりたい事。 入力ホームで名前、コメントを入力する。 その名前、コメントを「{番号}<>{名前}<>{コメント}<>{投稿された時間}」と言う形で テキストファイルに保存する。 わからない事。 名前と投稿時間はテキストファイルに保存することができたのですが、 番号とコメントを保存することができません。 色々ためしたのですが、分からなかったので質問させて頂くことにしました。 あと、flock関数の必要性が調べたのですが、よくわかりません。 誰かが書き込んでいるときに他の人が書き込めないようにファイルをロックする。 と私の中で捉えているのですが、何か物足りない気がします。 以下コード html ``` sample 名前 コメント ``` ``` sample "."\n"); fwrite($filename, $name."<>"."\n"); fwrite($filename, $comment."<>"."\n"); fwrite($filename, date('H時i分')."\n"); flock($filename, LOCK_UN);//ファイルをロック?? fclose($filename); ?> ``` よろしくお願いいたします。
回答: 番号が無いのはfopenのaオプションは追記オプションなので、既存のtxtの内容を読み込めないのではないかと思います。読み込むならrオプションが必要です。 コメントが無いのは単に何も入力していない可能性もあります。valueではなく、textareaタグ内のものが送信されるので。 ちなみに正常に送信できても、textareaは改行を含むこともできるので、txtファイル内にも改行が入ってしまい正しく保存できません。改行を何か別の特別な文字に置き換えたり、ということが必要になってきます。また、そうすると区切り文字である「<>」も入力されたらエラーにするか消すかしないとtxtファイル内がおかしくなると思います。 flockもしないと、複数の人が書き込んだ時にtxtの中身が一部消えてしまったりします。割とよく発生したのを見たことがありますし、だからといってflockが完璧に信頼できるかというと微妙です。 そのあたり気をつけないと、総合すると結局MySQL等のDBの保存した方が楽、という感じになると思います。クオリティを求めないのであればとりあえずtxt保存でも良いとは思いますが。