1

これはかなり自由回答の質問ですが、登録フォームでのユーザー入力を検証し、再送信を試みる前に変更する必要がある情報がある場合はユーザーに伝えるための推奨される方法を知りたいです。現在、maxlength などの HTML 属性を使用してフォームをセットアップしていますが、これは明らかに信頼できません。そのため、PHP コードでは、長さを超える文字列を除外したり、入力をサニタイズしたりしています。

ただし、指定された入力が無効な場合は、PHP コードでユーザーを登録ページにリダイレクトします。このページは、ユーザーの以前の入力がなく、何を変更する必要があるかを示すインジケーターもなく、通常どおり表示されます。

これは明らかに受け入れられないので、JavaScript を検証の中間手段として使用してインジケーターを表示する必要があるかどうか、またはセッション変数を使用して以前の入力を中継し、エラーを表示するフィールドを示す必要があるかどうかを知る必要があります。または、まったく別の何か。

うまくいけば、私の質問が明確になり、すべての助けに感謝します!

編集: JavaScript を無効にしているユーザーは、この種のことを考慮する必要がある現実的な問題ですか?

4

1 に答える 1

2

あなたの答えは簡単です:

両方

まず、クライアント側で初期検証を行います。これは、ユーザーチェック/認証/権限レベルを実行することではありません(少なくともまだ)。例外が発生する可能性があります。AJAX呼び出しを使用して、誰かがすでに登録されている電子メールアドレスでアカウントを作成しようとしているかどうか、またはそのような「安全」なものかどうかを確認する場合(サニタイズしてください... ...すべて)小切手。

それは、「このフィールドはばかチェックに合格するか」についてです。

それがJS検証の目的です。失敗した場合は、フィールドにcssクラスを設定して、何かが起きていることを視覚的に知らせます。css:before:after疑似セレクターを調べてください。これにより、スタイリングするものの前後にテキストや画像を追加するなどのことができます(inputこの場合)

input.valid:before { content : url("checkmark.png") }
input.invalid:after { content : url("big-red-x.png") }

エラーに関するユーザーフレンドリーな情報を提供するツールチップまたはメッセージバナーを動的に追加できます。

これらすべてのものは、POSTリクエストを送信する方法を知っている人が、多くの開発者向けのWebソリューションの1つを使用して(または、自分のサーバーからのスクリプトでそれを実行しようとしている本当に退屈な人)、手に入れることができます。あなたのサイトはとてもオープンです)。

そのため、PHPを使用して検証する必要があります。

これは、すべてをサニタイズするときでもあります(または、データベースアクセスレイヤーとしてPDOを使用し、事前にサニタイズされたソリューションを使用します)。そして、権限などをデータベースで探し始めることができます。

PHP側でエラーが発生した場合は、古い値がすでに入力されている状態で、それらを既に表示されているページにダンプして戻します。

そこから、サーバー側のメッセージを使用してJS検証エラーをトリガーします......そしてJS検証を再度実行して、フィールドのエラーを取得します...また(JS以外の人の場合は可能ですが)ページロードでこれを非表示/削除)PHPで発生したエラーのリストを保持するための静的バナーをどこかに含めます。

これは必要なだけ深くすることができ、これらすべてをリグして一連のAJAX呼び出しを実行し、PHPエラーをエラー配列で返してページに戻し、解析して適用することができます。不適切なフィールドに移動するか、中央のバナーをどこかに配置します...

あなたが言ったように、これはかなり自由形式の質問です。

したがって、クライアントの観点から見た高レベルの目標は、1。何かが間違っている場合に、応答性の高い(/即時の)ユーザーフレンドリーなフィードバックを提供する2.フィードバックを簡潔で、明確で、実用的なものにする3.可能な限り実行するすべてを書き直したり、ページ間を行ったり来たりすることなく、最終的には、フォームに入力してからアクセスしようとしているものの中に入るまでの間にページを0回変更することが夢です。

于 2012-09-16T06:57:43.310 に答える