6

私はいくつかの $_GET 変数を取得するスクリプトをまとめています。これらの変数は、見積もりの​​計算などの目的でスクリプト内で使用されます。

私が抱えている悪夢は、それらのいずれかに値がないかどうかを単純に判断できることです。たとえば、 ?var1=500&var2=&var3=Yes var2 が原因です。

すべての $_GET 変数に値があるかどうかに応じて、それに応じてさまざまなアクションを実行します。

私は調査し、これをオプションとして思いつきました:

<?php 
foreach($_GET as $name => $value) {
    if ($value == "") {
        $proceed = 0;
    } else {
        $proceed = 1;
    }
}
?>

現時点では、テスト目的で $proceed を使用して簡単なテキストをエコーし​​ています。

これは機能せず、issetemptyを検討しましたが、この場合、両方のオプションは役に立たないと思います。値が指定されていない $_GET パラメータのデフォルトは "' であるという多くの情報源を読んだので、これが機能しない理由について困惑しています。

パラメータが 0 に設定されることがあるため、ここではを使用できません。

言うまでもなく、$_GET の内容を出力して満足のいく結果が得られたので、データはすべて良好です。

どんな助けでも大歓迎です。

4

4 に答える 4

2

不足しているパラメータは に表示されません$_GET。クエリ文字列が次のようになっているとします。

index.php?page=5

パラメータを予期していたidとしても、自動的に に表示されるわけではありません$_GET。それらを使用するときに(および空の文字列に対して)チェックする必要があるだけですisset-先制的にではありません。それはうまくいきません。

于 2012-08-30T23:53:08.760 に答える
0

このようなものはどうですか?

<?php 
$expectedVars = array('var1', 'var2');

foreach($expectedVars as $key => $val) {
    if($_GET[$val] == "") {
        $proceed = 0;
    } else {
        $proceed = 1;
    }
}
?>
于 2012-08-31T00:16:53.427 に答える
0

次のコードを使用して、変数のリストを定義し、存在する場合は $_GET を介して渡された値に設定し、存在しないかクエリ文字列に値がない場合は空の文字列に設定できます。

$getvars = array();
$expectedvars = array(                    // define variables to be set from $_GET
  'var1', 'var2', 'var3', 'var4', 'var5',
);

foreach($_GET as $key => $value) {        // store all $_GET variables present
  $getvars[$key] = $value;                // in an associative array
}

foreach($expectedvars as $variable) {          // now create all vaariables,
  ${$variable} = (isset($getvars[$variable]))  // if value was passed in url
    ? $getvars[$variable]                      // then set to that value
    : '';                                      // otherwise set as empty string
}

これにより、適切な値を持つ変数 $var1、$var2、$var3、$var4、および $var5 が作成されます。

于 2012-08-31T00:43:08.373 に答える
0

あなたの質問を正しく読んでいるなら、あなたも見ています

設定するパラメーターを確認して値を設定しますが、便利なように foreach を使用して $_GET をループします。

おそらく、期待どおりのパラメーターの配列を作成し、それをループして、 $_GET にも同じキーが含まれているかどうかを確認します。

<?php 
$allowed = array('var1','var2','var3');
$error = array();

foreach($allowed as $key) {
    if(array_key_exists($key,$_GET)) {
        //Validate, value must contain t least 1 len
        if(strlen($_GET[$key]) >= 1){
            $$key = $_GET[$key];
        }else{
            //Assign an error if param has a blank value
            $error[$key] = $key." parameter must contain a value";
        }

    }else{
        //Assign an error if params not been passed to the url
        $error[$key] = $key." parameter not set";
    }
}


if(!empty($error)){
    //A Params missing or has no value, dont continue
    echo 'All parameters required!<br />';
    foreach($error as $value){
        echo '* '.$value.'<br />';
    }
}else{
    //No errors do something
    echo 'var1 is set: '.$var1;
    echo 'var2 is set: '.$var2;
    echo 'var3 is set: '.$var3;
}
?>
于 2012-08-31T00:18:48.743 に答える