Php 在WP_查询之前检查变量是否不为空
在进行wp查询之前,我想测试Php 在WP_查询之前检查变量是否不为空,php,wordpress,Php,Wordpress,在进行wp查询之前,我想测试$\u GETvarriable是否为空。我试过这个: ($miesto_name != '' ? "array('key' => 'miestas', 'value' => $miesto_name)," : '') 在arrgs中: $args=array( 'post_type' => $type, 'posts_per_page' => 32, 'paged' => $paged, 'post_s
$\u GET
varriable是否为空。我试过这个:
($miesto_name != '' ? "array('key' => 'miestas', 'value' => $miesto_name)," : '')
在arrgs中:
$args=array(
'post_type' => $type,
'posts_per_page' => 32,
'paged' => $paged,
'post_status' => 'publish',
'order' => 'ASC',
's' => $_GET['paieska'],
'meta_query' => array(
'relation' => 'AND',
($miesto_name != '' ? "array('key' => 'miestas', 'value' => $miesto_name)," : ''),
array(
'key' => 'imones_apskritis',
'value' => $apskritis_name
),
'city_clause' => array(
'key' => 'apmoketa'
)
),
'orderby' => array( 'city_clause' => 'DESC', 'title' => 'ASC' ),
'tax_query' => array(
array(
'taxonomy' => 'veiklos',
'field' => 'term_id',
'terms' => $_GET['veikla'])
)
);
但这并没有起作用,在执行查询之前是否有其他方法检查值是否为空
我真的找不到这样做的方法,我不想为每个条件创建单独的$args…这应该可以
$paieska = isset( $_GET['paieska'] ) ? $_GET['paieska'] : 'Value if Get is Empty';
$veikla = isset( $_GET['veikla'] ) ? $_GET['veikla'] : 'Value if Get is Empty';
$custom_array = !empty( $miesto_name ) ? array('key' => 'miestas', 'value' => $miesto_name) : array();
$args=array(
'post_type' => $type,
'posts_per_page' => 32,
'paged' => $paged,
'post_status' => 'publish',
'order' => 'ASC',
's' => $paieska,
'meta_query' => array(
'relation' => 'AND',
$custom_array,
array(
'key' => 'imones_apskritis',
'value' => $apskritis_name
),
'city_clause' => array(
'key' => 'apmoketa'
)
),
'orderby' => array( 'city_clause' => 'DESC', 'title' => 'ASC' ),
'tax_query' => array(
array(
'taxonomy' => 'veiklos',
'field' => 'term_id',
'terms' => $veikla
)
);
您可以简单地使用PHP中的函数,它可以做一些事情
- 检查
变量是否存在$\u GET
- 如果找到,则返回值,否则返回false
- 设置筛选器时清理/验证该值
$\u GET
变量中的非净化/非验证数据(这也适用于站点中的任何其他输入,如$\u POST
和表单字段)。这是黑客用来将恶意代码按顺序注入站点的最常用位置,因此,如果您不希望您的站点被黑客攻击,始终对进入站点的任何数据进行SANTIZE/VALIDATE/ESCAPE并且永远不要信任任何人,甚至是您自己
如果您的$\u GET
值预期为字符串,则只需执行以下操作(根据预期的数据类型调整过滤器)
出于好奇,如果它的计算结果为false,它会插入占位符吗?您应该使用
==代码>像$miesto_name!==''?数组('key'=>'miestas','value'=>$miesto_name),:''
发布了一个答案,但从未使用过未消毒的$\u GET
变量值。这是用于向站点注入恶意代码的头号位置我同意,让我们告诉OP清除$\u GET
$value = filter_input( INPUT_GET, 'name_of_key', FILTER_SANITIZE_STRING );
var_dump( $value );