0

始めに、私はまだphpの初心者であり、私が学んだことの多くは、私自身も持っていたこのサイト全体で解決された問題からです。

元の質問すべてに対する答えをここで見つけましたが、それらをすべてまとめると、コードを機能させることができません。

PHP_SELFを使用して自分自身に投稿する基本的なフォームがあります。$ _POST配列からのすべての入力をチェックして、(1)正の整数、(2)整数、および(3)小数が含まれていないことを確認します。

if( !empty($_POST ) ) {
    foreach( $_POST as $key => $amount ) {
        if( !is_int($amount) || $amount < 0 || is_float(amount) ) {
            die( 'All data must be positive integers.' );
        }
    }
}

入力フィールドに何を入力しても、常に「die」エラーが返されます。

4

4 に答える 4

3

is_float(amount)

する必要があります

is_float($amount)

于 2012-08-31T00:54:03.953 に答える
3

$amount文字列であるため、is_int常に失敗します。filter_var代わりに試してください

if( !empty($_POST ) ) {
    $options = array(
        'options' => array(
            'min_range' => 0
        )
    );
    foreach( $_POST as $key => $amount ) {
        if( filter_var($amount, FILTER_VALIDATE_INT, $options) === false ) {
            die( 'All data must be positive integers.' );
        }
    }
}
于 2012-08-31T00:59:26.840 に答える
0

コードのタイプミス。に置き換えis_float(amount)ますis_float($amount)

于 2012-08-31T00:54:51.973 に答える
0

これを試して。

if(!empty($_POST)) {
    foreach($_POST as $key => $amount) {
        if(!(is_int($amount) && $amount >= 0)) {
            die( 'All data must be positive integers.' );
        }
    }
}
于 2012-08-31T00:58:33.653 に答える