6

印刷会社向けのワークシート アプリをコーディングしています。フォームが殺到しています。入力フィールドごとに、$_POST変数が設定されているかどうかを確認する必要があり、設定されている場合は値をエコー バックします。(たとえば、検証エラーの後など、何らかのエラーが発生した場合、ユーザーはフォーム全体を再入力しないでください)

サンプルコード:

if(isset($_POST['time'])&&!empty($_POST['time'])){echo $_POST['time'];}

これを約100回実装する必要がありました。そこで、これをシンプルで読みやすくするための何らかの関数を見つけようとしました。

このようなもの:

function if_post_echo($key, $default = "") {
    if(isset($_POST[$key])&&!empty($_POST[$key])){
    echo $_POST[$key];   
    }else{
    echo $default;   
    }
}

しかし、これはうまくいきません。$_POST次のように$key変数に渡そうとしました:

if_post_echo($_POST['time'])

function if_request_echo($key, $default = "") {
        if(isset($key)&&!empty($key)){
        echo $key;   
        }else{
        echo $default;   
        }
    }

そして、私もこれを試しました:

function if_request_echo($key, $default = null) {
    return isset($_REQUEST[$key])&&!empty($_REQUEST[$key]) ? $_REQUEST[$key] : $default;
}

合理的な結果なし。

質問:

必要な$_POST変数を探してそれを返す関数を作成するにはどうすればよいですか、または変数が設定されていない場合は空の文字列を返します。$_GETとに対してもこれを行う方法はあり$_REQUESTますか?(それとも単純に複製?)

4

8 に答える 8

7

PHP テスト関数:

<?php
function test_req($key, $default = '') {
    if(isset($_REQUEST[$key]) and
       !empty($_REQUEST[$key])) {
        return $_REQUEST[$key];
    } else {
        return $default;
    }
}
?>

次に、フォームの HTML で:

<input name="my_field" value="<?php echo htmlentities(test_req('my_field')); ?>" />

$_REQUEST(リンク) は、POST ( ) と GET ( )の両方のリクエスト パラメータを含むPHP スーパー グローバルです。$_POST$_GET

POST リクエスト パラメータのみをキャプチャする場合は、次のようになります。

<?php
function test_req($key, $default = '') {
    if(isset($_POST[$key]) and
       !empty($_POST[$key])) {
        return $_POST[$key];
    } else {
        return $default;
    }
}
?>

例えば。

于 2011-04-11T15:09:39.620 に答える
2

これはうまくいくはずです:

function if_post_echo($key, $default = ''){
    if(isset($_POST[$key]) AND !empty($_POST[$key]){
        echo $_POST[$key];
    }

    echo $default;
}

問題が発生した場合は、すべてが適切に投稿されているかどうvar_dump($_POST)かを確認することをお勧めします。print_r($_POST)

于 2011-04-11T15:11:50.187 に答える
1

あなたの最初の機能は私にとって完璧に機能します。

なぜうまくいかないと思いますか?

ただし、より良いバリアントは

function _post($key, $default = "") {
    if(isset($_POST[$key])){
        return $_POST[$key];
    }else{
        return $default;
    }
}

それを使用するには:

echo $_post($key); // You could define the message as a second parameter.
于 2011-04-11T15:04:52.607 に答える
0

あなたの方法はここでうまくいくようです:

function if_post_echo($key, $default = "") {
    if(isset($_POST[$key])&&!empty($_POST[$key])){
        echo $_POST[$key];   
    }else{
        echo $default;   
    }
}

名前 test で簡単な入力を行い、フォーム メソッドはPOSTand usingecho if_post_echo('test');です。

It posted on the page what was in the text box.

于 2011-04-11T15:18:26.663 に答える
0

この機能は、2 つの疑問符を使用して「Null 合体演算子」として PHP 7 に追加されています。

echo ($_GET['message'] ?? 'default-if-not-set');

https://wiki.php.net/rfc/isset_ternary

于 2015-09-23T22:21:50.773 に答える
0
function requireArray( $array, $required ) {
    foreach( $required as $k=>$v ) {
        if ( !isset($array[$k]) || empty($array[$k]) )
            return false;
    }
    return true;
}
#call like this:
requireArray($_POST, array('time', 'username', 'foo'));

具体的に知りたい場合:

function missingFrom( $array, $required ) {
    $r = array();
    foreach( $required as $k ) {
        if ( !isset($array[$k]) || empty($array[$k]) )
            $r[] = $k;
    }
    return $r;
}

前の関数と同様に呼び出されます。

于 2011-04-11T15:11:34.257 に答える