phpでweb開発しています。formの情報をブラウザに記憶させないための手段として、submit前に、全項目をhiddenに変えると、記憶されないでしょうか?
phpでweb開発しています。formの情報をブラウザに記憶させないための手段として、submit前に、全項目をhiddenに変えると、記憶されないでしょうか? ※name属性を動的に変える以外の対応が、知りたいです。 ※autocomplete=offはブラウザによって動きが違うので、使わない予定です。 よろしくお願いします。
ベストアンサー
>name属性を動的に変える以外の対応が、知りたいです。 name属性値を動的に生成するのが簡単だし、このカテゴリ(php)としての解はそうなりますね(苦笑 <input type="text" name="username_<?= md5(rand()) ?>"> (受け取り側はname属性値の"_"の前までで処理する) >submit前に、全項目をhiddenに変えると、記憶されないでしょうか? ブラウザの実装次第だから「submit前」で間に合う保証はないですね。すべてのブラウザで問題ないかなんてと言われてもそれは悪魔の証明だし・・・ https://developer.mozilla.org/ja/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion JavaScriptでそれ(type属性を hidden に変える)をするくらいなら、htmlにform要素を書かない方が多少はマシかもしれません。ページ表示時にブラウザがform要素を探しても存在していなければ、補完機能が発動しないと思うので。 button要素のclickイベントでのJavaScriptで(そのボタンを disabled にしてから)form要素を動的に生成して(POSTデータとしてinput要素などを拾ってセットして)送信すればいいと思います。 https://developer.mozilla.org/ja/docs/Web/API/FormData/FormData
(蛇足) >formの情報をブラウザに記憶させない >autocomplete=offはブラウザによって動きが違うので、使わない そうまでして「記憶させたくない」事情ってなんですかね(ちょっと気になる)。
質問者からのお礼コメント
ご回答ありがとうございました。 おっしゃる通りと思います。 nameを変更するようにします。 ありがとうございました。
お礼日時:5/27 10:20