0

設定されているかどうかを確認する投稿が大量にあります。

        if 
        (
            isset($_POST['id']) && isset($_POST['type']) && isset($_POST['typeid']) && isset($_POST['name']) 
            && isset($_POST['level']) && isset($_POST['thumbnail']) && isset($_POST['def']) && isset($_POST['resist']) 
            && isset($_POST['health']) && isset($_POST['mana']) && isset($_POST['stamia']) && isset($_POST['str']) 
            && isset($_POST['dex']) && isset($_POST['rec']) && isset($_POST['int']) && isset($_POST['wis']) && isset($_POST['luc']) 
            && isset($_POST['information']) && isset($_POST['gold']) && isset($_POST['tradeable']) && isset($_POST['faction'])
            && isset($_POST['category'])
        )
        {

私はこれをやってみました:

if (isset($_POST)) {

しかし、いくつかのフィールドに入力するのを忘れていましたが、エラーは発生せず、処理されました。

私の質問:

これらの投稿がすべて混乱なく設定されているかどうかを確認するにはどうすればよいですか? これを行うためのより短い方法はありますか?ありがとう。

4

5 に答える 5

5
$requiredFields = array('id', 'type', ...);
if (array_diff_key(array_flip($requiredFields), $_POST)) {
    die('Not all fields were posted');
}
if (count(array_filter($_POST)) != count($_POST)) {
    die('Some fields were empty');
}
于 2013-04-29T14:48:26.447 に答える
1

あなたはそれを必要としません。フォームの値はデフォルトで設定され、チェックボックスを保存します。
したがって、ほとんどの場合、このチェックはまったく必要ありません。

さらに、このように値をチェックするのは間違っています。

PHP [適切に構成されている場合] は、存在しないフィールドをキャッチするのに十分です。フォームで見逃した、またはスペルを間違えたフィールドがわかります。現在のアプローチでは、どの特定のフィールドが間違っているかはわかりません。

したがって、役に立たないコードを書く代わりに、PHP にケースを処理させてください。

一部の値が空の文字列 (またはスペース) で構成されているかどうかを確認したい場合は、別の問題です。これにはある種のループを使用できます。お気に入り

if (count(array_filter($_POST,'trim')) != count($_POST))
于 2013-04-29T14:48:45.370 に答える
0

すべてのフィールドを保持する配列を作成します。

$fields = array('id', 'type', 'typeid');

そして、この配列をループします:

foreach ($fields as $field) {
    if (! isset($_POST[$field])) {
        // here you have some missed data
    }
}
于 2013-04-29T14:50:04.087 に答える
-1

次のようなものを使用します。

すべての投稿キーを配列に入れ、 for ステートメントですべてのキーが設定されていることを確認します。

function checkPost()
{
for ($i = 0 ; $i < count($array) ; $i++)
{
   if (!isset($_POST[$array[$i]])
     return false;
}
return true;
}
于 2013-04-29T14:51:17.137 に答える
-2

次のように foreach ループを使用できます。count 関数を使用してテストします。クロス サイト スクリプティングと SQL インジェクションもテストする必要があるため、投稿値を検証することを忘れないでください。

foreach ($_POST as $key => $value ) {
    if($value == '') {
       $errors[] = 1; //adds a value to the errors array if value is not populated
    }
}

//check if the errors array is populated.
if( count($errors) > 0 ) {
    // don't submit
} else {
    //submit
}
于 2013-04-29T14:53:52.330 に答える