2010-12-04 8 views
1

私はフォームウィザードを構築しており、多数のフォームから多数の受信データの検証に最も効率的にアプローチする方法についてアドバイスが必要です。バッチデータをPHPで検証する

私の当初のアプローチは、フォームに固有の値をチェックし、必要なフィールドが存在し、正しい入力名/値がいくつかのフォームに指定されており、電子メールが有効であることを確認するバリデーター機能いくつかのフィールドのために、他のもののための整数などですが、私のコードは制御を見失うようになりました。私は、このタイプのものにデータベースを使用する必要があるのか​​どうか、私のアプリケーションを通してさまざまなユーザーデータが入ってくるのではないかと思います。

基本的に、ユーザーは3つの異なるパスを選択でき、どのパスが選択されているかに応じて、各パスには最小3ステップと最大6ステップがあります。

私は本当にそれが理にかなっている限り、どのような方法でもこれを構造化できます。私はネイティブのPHPソリューションやデータベースに接続することができます。

私は非常に感謝しています。

+0

これは主観的なものです。パフォーマンスが問題であれば、データベースから離れてください。 **制御から外れていますか?**、あなたは既存のアプリケーションで何が成し遂げられるかを再検討しなければなりません。 – ajreal

+0

そのコメントの意味を正確には分かりません。 –

答えて

1

のに役立ちますどのくらい知らん...それぞれの値をチェックし、その後、クエリを実行することができ、あなたの問題は、多くの種類から生じますあなたが提供しなければならないデータと、処理される各入力の中で何を確認するのか?

検証の各タイプ(必要なテキスト、番号、電話、電子メールなど)ごとにバリデータ関数を設定し、HTML内のフォーム要素自体でそれぞれをチェックして、それを解析すること提出時にフォームで提出された唯一の他のものであるvalueを除いてnameフィールドを<input>にする必要があります。

必要な電話番号フィールドがあるとします。そして、あなたはそれが$_POST['officephone']['required_phonenumber']になり提出スクリプトで適切にそれを解析する必要があります

<input type="text" name="officephone[required_phonenumber]" value=""> 

を、そしてあなたがその値で実行するためにバリ何を知っているだろうことに基づいて:あなたは、次のようなHTMLでそれを書くことができます。

これは、ユーザーによる入力の自由形式の名前付けを許可する必要がある場合には、十分な方法です。フォームウィザードは、ユーザーが必要とするものに基づいて適切なバリデータータグを名前に追加するだけです。

エンドユーザがPOSTで手動で提出できるものと同様に、フォーム提出に関するより一般的な注意事項では、バリデータを変更するだけで、入力名を改ざんして別のバリデーションを取得したり、タグ。

具体的に名前のついた入力(おそらく末尾にユニークなIDが付いている)だけを許可するのが理想的です。この命名では、適切な検証が行われます。たとえば、フォームウィザードでは、次のような入力に名前を付けることができます。

<input type="text" name="phone_1" value=""> 

とフォームのプロセッサは、「電話」で始まるものは、電話番号などの検証、およびそれに応じて使用する必要があることを知っているだろう。そうすれば、HTMLのデータの検証方法を示す必要はありません。

+0

あなたの答えをありがとう。私はこの方法に精通していますが、言及したように、フェールセーフではありません。私が持っている最大の問題は、ユーザーが提供するデータの量です。データ、名前、電子メール、電話番号などの情報が入ってくるかどうかを検証する方法を知っていますが、ユーザーは〜30種類のオプションを提出できますそれらは一緒にグループ化することは必ずしも容易ではない - いくつかは文字制限があり、いくつかは必須であり、いくつかはブール値などしか許されない。私はもっと大きなスケールで動作する解決策を必要とする。 –

+0

できるだけそれらをグループ化し、上記のようなHTML要素のタグか、巧妙な要素の命名のいずれかによって、どのバリデータを各入力に適用するかを示す方法を見つけます。どのような場合でも、フォームプロセッサは、データ自体から推測するか、提供するヒントを使用して、着信データを知る必要があります。私はこれで他にどのように助けることができるかわかりません。 – Fanis

+0

あなたのご意見をお待ちしております、私はおそらくあなたのアドバイスを使用し、htmlの配列で行くでしょう。ありがとう –

0

私は、うまくいけば答えを投稿します。それと

<?php 

if(isset($_POST)) { 
    foreach ($_POST as $key => $val) { 
    if ($val == "") { 
     echo "u no leave null main"; 
    } else if ($key == "name" && $val == "restricted_value") { 
     echo "you are not permited"; 
    } 
    } 
} 
?> 

私が正しく理解していれば、あなたはそれが

+0

私は努力を感謝しますが、私のシナリオはあなたの提供する回答アカウントよりもはるかに複雑です –