为了避免警告,IF(isset($_POST)&&!Empty($_POST)的替代代码是什么?

时间:2020-12-18 作者:Asmat Ali

我试图在我的WordPress网站上插入一些php代码,但它可能会因为直接访问而发出安全警告$_POST 变量

而不是$name = $_POST[\'name\'];, 我可以使用$name = filter_input(INPUT_POST, \'name\'); 然而,我不知道应该使用哪一段代码来代替if(isset($_POST) && !empty($_POST)) { //some code }?

提前感谢您的帮助。

2 个回复
最合适的回答,由SO网友:phatskat 整理而成

filter_input 是正确的方式。如果它没有返回任何有效的内容,它将返回null:


$myvar = filter_input( INPUT_POST, \'something\', FILTER_SANITIZE_STRING );

if ( empty( $myvar ) ) {
    // Do whatever you would have done for ! isset( $_POST[\'something\'] )
}

// Use $myvar
filter_input 如果找不到请求的索引,则不会抛出任何通知,因此这就像isset 内置于函数中。

Edit: 只需确保使用FILTER_ 要清理或验证,请注意,PHP文档中记录了一些关于这些的问题。对于大多数通用用例,它们应该可以正常工作,但一旦您有了用户输入,就要始终正确地验证它(与直接从$_POST).

SO网友:Asmat Ali

虽然该错误不是直接访问$\\u POST变量引起的,但我能够将替代方法写入if(isset($_POST)).

首先,您需要在表单中为提交按钮命名。您的表单应该如下所示:,

<form action = "" method = "post">
   Some fields.
   <input type = "submit" name = "submit_button" />
</form>
然后在php方面,

$submit =  filter_input(INPUT_POST, \'submit_button\');
if (isset($submit)){
       //some code.
}
希望这对别人有帮助。