ユーザー入力を取得するためのウィザードベースの一連のフォームを作成しています。そのウィザードの要件の1つは、ユーザーが[保存]ボタンをクリックするまでスクリプト(PHP)が入力をデータベース(MySQL)に保存できないことです。そのため、ある形式のユーザー入力を別の形式に転送するメカニズムをデバイス化する必要があります。ユーザーが「前へ」または「次へ」ボタンをクリックしたとき。Cookie、セッション、一時ファイルなどのさまざまな方法を使用することを検討しましたが、シリーズのすべてのフォームに存在する非表示フィールドにbase64_encodedシリアル化データを埋め込むことにしました。このフィールドの値は、フォームの送信時にデコードされ、現在のフォームの他の値が挿入された後、次のフォームに入力するために再エンコードされます。
隠しフィールドがどのように見えるかのサンプルを次に示します。
<input type="hidden" name="wizard:presave" value="YTo2OntzOjU6InRpdGxlIjtzOjEwOiJRdWVzdGlvbiAyIjtzOjQ6InRleHQiO3M6MTk6IlllcyBpdCdzIGEgcXVlc3Rpb24iO3M6NDoidHlwZSI7czo2OiJjaG9pY2UiO3M6NzoiY2hvaWNlcyI7YTowOnt9czo1OiJwb2ludCI7aToxO3M6Mjoib3AiO3M6MTM6ImVkaXRfZXhlcmNpc2UiO30=" />
したがって、質問は次のとおりです。
それは良い/悪い習慣と見なされますか?
HTMLformの非表示フィールドの長さに制限はありますか?
考えられるセキュリティの問題は何ですか?
そして、より良い選択肢はありますか?(説明付き、できればjavascriptを使用せずに)
前もって感謝します!