PHP生成一个简单的if-isset空函数

PHP生成一个简单的if-isset空函数,php,function,post,isset,simplify,Php,Function,Post,Isset,Simplify,我正在为一家打印机公司编写一个工作表应用程序。 我收到了大量的表格。 对于每个输入字段,我必须检查是否设置了$\u POST变量,如果设置了,则返回值。(如果出现某些错误,例如验证错误后,用户不应重新键入整个表单) 示例代码: if(isset($_POST['time'])&&!empty($_POST['time'])){echo $_POST['time'];} 我不得不实施了大约一百次。 因此,我试图找出某种函数,使其简单易读 大概是这样的: function if_p

我正在为一家打印机公司编写一个工作表应用程序。 我收到了大量的表格。 对于每个输入字段,我必须检查是否设置了
$\u POST
变量,如果设置了,则返回值。(如果出现某些错误,例如验证错误后,用户不应重新键入整个表单)

示例代码:

if(isset($_POST['time'])&&!empty($_POST['time'])){echo $_POST['time'];}
我不得不实施了大约一百次。 因此,我试图找出某种函数,使其简单易读

大概是这样的:

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

function if_request_echo($key, $default = "") {
        if(isset($key)&&!empty($key)){
        echo $key;   
        }else{
        echo $default;   
        }
    }
但这行不通。 我尝试为
$key
变量传入
$\u POST
,如下所示:

function if_post_echo($key, $default = "") {
    if(isset($_POST[$key])&&!empty($_POST[$key])){
    echo $_POST[$key];   
    }else{
    echo $default;   
    }
}
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;
}
没有任何合理的结果

问题是: 我如何伪造一个函数来查找必要的
$\u POST
变量并返回它,或者如果其unset则返回一个空字符串。
对于
$\u GET
$\u REQUEST
也有这样做的方法吗?(还是简单地复制?

您的第一个功能对我来说非常有效。

你为什么认为它不起作用

然而,更好的变体是

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.

您的PHP测试函数:

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

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;
}
像前面的函数一样调用。

这应该可以:

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

    echo $default;
}
如果您遇到问题,我建议您尝试
var\u dump($\u POST)
print\r($\u POST)
,查看是否所有内容都已正确发布。

如果您有大量字段,我建议您也使用默认数组:

$defaults = array(
    "time" => "default",
    "name" => "enter name here",
    "text..." => "...",
);

$fields = array_filter($_POST) + $defaults;
$fields
随后将包含一个带有POST数据或预设默认值的表单值列表。不,伊塞特,明白吗


特别是:如果没有提供回调,则将删除所有等于FALSE的输入项。在某种程度上解释了此解决方案背后的工作原理。

您的方法在这里似乎运行良好:

function if_post_echo($key, $default = "") {
    if(isset($_POST[$key])&&!empty($_POST[$key])){
        echo $_POST[$key];   
    }else{
        echo $default;   
    }
}
我用名称test做了一个简单的输入,表单方法是
POST
,使用
echo if_POST_echo('test')


它在页面上发布了文本框中的内容。

请注意,这是多余的:

isset($_POST[$key]) && !empty($_POST[$key])
未设置的变量将始终为“空”,因此
isset()
将隐含在
empty()
调用中

对于您的逻辑,您只需执行以下操作即可获得相同的结果:

!empty($_POST[$key])

此功能在PHP 7中添加为“空合并运算符”,使用两个问号:

echo($_GET['message']??“如果未设置,则默认设置”)


大多数情况下,您应该避免$\u请求,这是安全问题。根据发送的数据使用$\u GET和$\u POST。谢谢您的评论@大卫:我知道$_请求的问题,但这次我们支持保护,应用程序无法从网络上获得@网络编码员:我不记得为什么我会这样设置,但我知道我曾经尝试过!没有isset单独清空,这导致了一些问题。@David,
$\u REQUEST
的安全性如何低于
$\u GET
$\u POST
?它们都可以由用户修改,以产生应用程序可能不期望的值。就这一点而言,
$\u COOKIE
也是如此,它的
$\u REQUEST
也从中获得了它的价值。看看Chris Shiflet,它实际上不是一种安全性,而是POST和GET方法之间的本质区别。我喜欢这种方法的简单性。谢谢;也为添加链接!(在这种情况下,它的工作原理确实类似于
empty()
)我真的搞砸了。使用您使用的这段代码,我粘贴了以下内容:
value=“
,并且不返回任何内容。
value=“
这不会检查变量是否为空,如果
$default
始终为空字符串,这就可以了。如果不是空字符串,则它不会按要求工作。