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
始终为空字符串,这就可以了。如果不是空字符串,则它不会按要求工作。