人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでfwriteを使ってファイルに書き込みをしています。

webフォームから入力した文字列を受け取り、
それを
fopen
flock
fwrite
flock
fclose
という流れで、ファイルに追記(a+)しています。

ところが、「あいうえお」とフォームから送信すると、
「あいうえお」と書かれるときと、
「あいうえおあいうえおあいうえお」と、2,3連続でかかれるときがあります。
(たぶん、フォーム送信後の画面で、フォームから別の文字列を送信したときのみ発生)

試しにfwriteの付近で、書き込みされる文字列をechoしてみましたが、「あいうえお」と正しく1度分だけでした。

何故ファイル書き込み分だけ同じ文字列が、2・3連続で書かれるのかわからず困っています。

何かミスしてそうなポイントがありましたら、アドバイス頂けると助かります。

●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:echo Flock PHP Web あいうえお
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● penchick
●60ポイント

単純な点ですが、送信ボタンを複数回押したりしたなどということはありませんか?それならば押された回数分、ファイルが実行されますので、echoで一度しか表示されないにもかかわらず複数の書き込みが行われるのも説明が付きます。

それと、

たぶん、フォーム送信後の画面で、フォームから別の文字列を送信したときのみ発生

の部分がよく理解できなかったのですが、「aaa」というリクエスト処理後のページにも同じフォームがあり、そこから再度「bbb」という文字列を送信した場合、「bbb」が複数回書き込まれるという認識でよろしいですか?

◎質問者からの返答

クリックは一度しかしていませんが、この状態になってしまいます。

「aaa」とフォームで送信後の画面に、さらに同じようにフォームがあり、そこからまたリクエストを送信できるようになっています。

そこから「aaa」をリクエストしても「aaa」しか書き込まれませんが、「bbb」と違うものを送信すると「bbbbbbbbb」となって書き込まれます。

echoでは「bbb」しか表示されません。

その後に「bbb」をリクエストすると「bbb」のみになります。

気になる点といえば「GET」でフォーム送信しています。

なので、初めのリクエスト後のURLには ?q=aaa 等とついたURLになります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ