データ検証の問題は、Habréで繰り返し提起されました。 サーバー側の検証とクライアント側の検証について説明しました。 Yii、CodeIgniter、Vanadium、.NET、JQueryプラグインなど、この目的のためのさまざまなフレームワークの使用について説明します。
しかし、サーバーとクライアントの両方にとって論理的に統合されたタスクとして、これらの問題の包括的な見解はありませんでした。
データの検証は透過的である必要があります。クライアントまたはサーバーのどちらで行われるかに関係なく、データを2つの部分に分けて、タスクごとに個別に実装する必要はありません。 いくつかのプロジェクトを行い、同じ作業を行った後、これらの部分を組み合わせて、コードの実際の複製に貴重な時間を費やさない方がいいと考えられます。
したがって、質問は、クライアントとサーバーを論理的に分離することなく、透過的なデータ検証システムを作成することです。 サーバー側の検証は、プログラマー側の追加の労力なしでクライアント側の検証を自動的に提供する必要があります。
この問題を解決するために、PHPおよびJavascriptの既存のデータ検証モジュールを使用します。 最初のフレームワークはサーバー側の検証を担当し、2番目のフレームワークはクライアント側でデータを検証します。 それらは私たちの主力製品であり、これらのフレームワークを相互に接続する方法を見つけることができるだけです。
問題を簡単に解決します-データ検証ルールを宣言するためのクラスを作成します。 この意味は、サーバー側とクライアント側の両方で適用できるいくつかのルールのセットがあるということです。 特異性はありますが、これらのルールを特定の検証フレームワークのコマンドに正しく解釈することに要約されます。
これで、次のスキームに従って検証が行われます。
1.ルールを定義する
2.サーバー側のアプリケーションのルールをPHPラッパークラスに渡します。
3.ルールをJavaScript配列に変換してクライアントに渡します。クライアント側では、適切なタイミングでJavaScriptラッパークラスによってデータがチェックされます。
例:
$validate=new Validate();
$validate//
->ruleUrl('url',' ')
->ruleEmail('email',' ',0);
if($_POST)
$validate->check($_POST,$errors);// $_POST, $errors
$js_main=$validate->js('main');// JavaScript
…..
function validate()// JavaScript
{
<?=$js_main?>
return main.checkForm($('#form'));//
}
ここで実際の例
を見つけること
ができます 、そして、例の
ソースコードはここで 。 検証は、Javascriptが有効なクライアント側で機能します。それ以外の場合、検証はサーバー側でのみ実行されます。