2012-02-11 4 views
0

不正なデータ収集を防止するために、PHPコードで不要な値が受け入れられないようにする方法を考えていました。PHPはHTMLリスト(選択、チェックボックス、ラジオ)のデータ収集を不正にしないようにします

私は、同じリストを使用して、検証する値を設定しています。これは、ドロップダウン、ラジオ、チェックボックスに適用されます。

これは非常に単純化された例ですが、私はこの考え方を他のプログラマーの手を通して実行して、

// get form value 
$name = $_POST['color']; 

// form list values 
$arr = array("blue", "red", "green"); 

// build options 
for($i = 0, $size = sizeof($arr); $i < $size; ++$i) 
{ 
echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>'; 
} 

// verify value is valid 
if (in_array($name, $arr)) { 
    // valid value 
} 

答えて

1

は、私は、これはそれを行うには良い方法であると信じてなり、右のスクリプトの先頭にチェックのすべてのロジック、すなわち:

// set the error flag 
$error_flag = false; 

// form list values 
$arr = array("blue", "red", "green"); 

if(isset($_POST)){ 
    // get form value 
    $name = $_POST['color']; 

    // verify value is valid 
    if (in_array($name, $arr)) { 
     // valid value 
    } else { 
     // error - you selected an invalid value! 
     $error_flag = true; 
    } 

    if($error_flag == false){ 
     // process data and save to database, etc etc 
    } 
} 

if($error_flag == true){ 
    // display the error 
} 

// build options 
for($i = 0, $size = sizeof($arr); $i < $size; ++$i){ 
    echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>'; 
} 

することができますので、私はエラーフラグに追加しましたまた、エンドユーザーに間違ったことを通知し、フォームを再び完了させることができます。もちろん、あなたはそれを展開することができますので、正しいフィールドには手前ですでに送られていたデータを覚えていますが、どのフィールドが悪いのかを示しています。

1

行く方法のようですね!これはただ速いスケッチだったのではなく、foreachの使用している場合

わからない

for($i = 0, $size = sizeof($arr); $i < $size; ++$i){ 
    echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>'; 
} 

私はおそらくんだろうけれども

foreach($arr AS $v){ 
    echo '<option value="' . $v . '">' . ucfirst($v) . '</option>'; 
} 
+0

'foreach' lessコードを書いてみようとすると良い点: – MrJ

+1

読みやすく:-)また、' foreach($ arr AS $ k => $ v)を使って配列の値にIDを追加できるようになりました。 '。 'for'では、キーはちょうどインクリメントされた整数ですが、それは実際のキーではないかもしれません。データベース。 – Richard

関連する問題