1

input file次の 2 つの質問は、セキュリティ上の理由によりの値を変更できないことを明確にします。

PHP では、フォームを検証するとき、通常のアプローチの 1 つは、ボタンinput textをクリックする前に提供された入力値を再入力するsubmitことです。これにより、クライアントは何を挿入したかを知ることができます。または、単純にフィールドに値を保持します。クライアントが期待しているものです。(特定のエラーが発生するたびにフォームを再入力する必要はありません)。

そこで、以下を使用します。

<input type="text" name="title" id="title" maxlength="100" value="<?php echo htmlspecialchars($title);?>" />

の値を変更できないinput fileため、提供された path$image['tmp_name']で再入力できます。これは、検証が失敗するたびに、クライアントが画像を再アップロード (または再参照) する必要があることを意味します。その値を維持する方法はありますか?

4

3 に答える 3

0

フォーム内の他の検証エラーに関係なくファイルを保存し (ファイル自体が有効な場合のみ)、ファイル アップロード フィールドをファイルの詳細 (ファイル名とサイズのリストなど) に置き換えることができます。

実際には、フィールドを置き換えるのではなく、必要に応じてその場所に別のファイルをアップロードするオプションを提供することをお勧めします.

于 2013-03-13T00:46:16.153 に答える
0

アップロードしたファイルをサーバーに保存します。

そのファイルに関連付けられた ID を参照する値を持つチェックボックスを生成します。デフォルトでオンにします。

同じファイルを再利用したくない場合は、チェックを外すようユーザーに伝えます。

于 2013-03-13T00:47:02.030 に答える
0

JavaScript を使用すると、すべてのフィールドが検証されるまでフォームが送信されないようにすることができます。

jQuery Validation Engineのチュートリアルが含まれていることをお勧めします。デモ

また、 jQuery file uploadを使用して画像アップローダーにスタイルを追加することもできます。

もちろん、いくつかのフィールドはサーバー上で検証する必要があるため、検証エンジンを使用して ajax リクエストを送信できます。

"ajaxUserCall": {
    "url": "ajaxValidateFieldUser",
    "extraData": "name=eric",
    "alertText": "* This user is already taken",
    "alertTextOk": " * User is valid",
    "alertTextLoad": "* Validating, please wait"
},

リダイレクトまたは更新なしのサーバー側検証の例:デモ

于 2013-03-13T01:02:41.033 に答える