あなたの答えは簡単です:
両方。
まず、クライアント側で初期検証を行います。これは、ユーザーチェック/認証/権限レベルを実行することではありません(少なくともまだ)。例外が発生する可能性があります。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回変更することが夢です。