Php 完全清除_POST数组
我想要完全清晰的$\u POST数组内容,我在internet上看到的所有示例如下所示:Php 完全清除_POST数组,php,Php,我想要完全清晰的$\u POST数组内容,我在internet上看到的所有示例如下所示: if (count($_POST) > 0) { foreach ($_POST as $k=>$v) { unset($_POST[$k]); } } 请告诉我,这种变体不会更好吗?(节省资源的观点) 是否?要取消设置$\u POST变量,请将其重新声明为空数组: $_POST = array(); 要取消设置$\u POST变量,请将其重新声明为空数组:
if (count($_POST) > 0) {
foreach ($_POST as $k=>$v) {
unset($_POST[$k]);
}
}
请告诉我,这种变体不会更好吗?(节省资源的观点)
是否?要取消设置
$\u POST
变量,请将其重新声明为空数组:
$_POST = array();
要取消设置
$\u POST
变量,请将其重新声明为空数组:
$_POST = array();
是的,很好
$\u POST
只是另一个变量,只是它具有()全局范围
$_POST = array();
…就足够了。循环是无用的。最好将其保留为数组,而不是取消设置,以防其他文件试图读取它并假设它是数组。是的,可以
$\u POST
只是另一个变量,只是它具有()全局范围
$_POST = array();
…就足够了。循环是无用的。最好将其保留为数组,而不是取消设置,以防其他文件试图读取它并假设它是数组。您可以同时使用和初始化:
或者在一份声明中:
unset($_POST) ? $_POST = array() : $_POST = array();
但是您想这样做的原因是什么?您可以同时使用和初始化:
或者在一份声明中:
unset($_POST) ? $_POST = array() : $_POST = array();
但是您想这样做的原因是什么?要回答“为什么”有人可能会使用它,我很想使用它,因为我在页面刷新后或从一个页面转到另一个页面时存储了$\u POST值。我的感觉告诉我这不是一个好的做法,但它仍然有效。要回答“为什么”有人会使用它,我很想使用它,因为我在页面刷新后或从一个页面转到另一个页面时存储了$\u POST值。我的感觉告诉我,这不是一个好的做法,但它仍然有效。这可能看起来太尴尬了,但您最好一次取消一个元素的设置,而不是取消整个$\u POST数组。原因如下:如果您使用的是面向对象编程,则可能会有一个类使用$\u POST['alpha'],另一个类使用$\u POST['beta'],如果您在首次使用后取消设置数组,它将在其他类中无效。为了安全起见,不要射中自己的脚,只需加入一种可以解除您刚才使用的元素的方法:例如:
private function doUnset()
{
unset($_POST['alpha']);
unset($_POST['gamma']);
unset($_POST['delta']);
unset($_GET['eta']);
unset($_GET['zeta']);
}
只需调用该方法并取消设置已传递给变量或参数的超全局元素。然后,其他可能需要超全局元素的类仍然可以使用它们
然而,你是明智的,一旦超球出现,就立即解除它们
已传递给封装对象
这看起来可能过于尴尬,但您最好一次取消设置一个元素,而不是整个$\u POST数组。原因如下:如果您使用的是面向对象编程,则可能会有一个类使用$\u POST['alpha'],另一个类使用$\u POST['beta'],如果您在首次使用后取消设置数组,它将在其他类中无效。为了安全起见,不要射中自己的脚,只需加入一种可以解除您刚才使用的元素的方法:例如:
private function doUnset()
{
unset($_POST['alpha']);
unset($_POST['gamma']);
unset($_POST['delta']);
unset($_GET['eta']);
unset($_GET['zeta']);
}
只需调用该方法并取消设置已传递给变量或参数的超全局元素。然后,其他可能需要超全局元素的类仍然可以使用它们
然而,你是明智的,一旦超球出现,就立即解除它们
已传递给封装对象
到目前为止,这些解决方案都不起作用,因为POST数据存储在标题中。根据这篇文章,重定向解决了这个问题
由于POST数据存储在标题中,因此到目前为止解决方案不起作用。根据这篇文章,重定向解决了这个问题
为什么要清空
$\u POST
?您甚至不需要计数<代码>$\u POST=array()
您已经设置好了。如果您需要更改$\u POST
的值,您就做错了。您甚至不需要编写条件。简单$_POST=array();语句就可以了。@Jon,@Lex:$\u POST
是可写的,这有点愚蠢,如果你使用类这样的接口来读取用户输入,清除它是有意义的。你为什么要清空$\u POST
?你甚至不需要计数<代码>$\u POST=array()
您已经设置好了。如果您需要更改$\u POST
的值,您就做错了。您甚至不需要编写条件。简单$_POST=array();语句就可以了。@Jon,@Lex:$\u POST
是可写的,这有点愚蠢,如果你使用类这样的接口来读取用户输入,清除它是有意义的。从技术上讲,它有作用域,因为PHP中的全局作用域不是。听起来你有一个无关的问题。如果你在清除之前阅读了帖子数据,那已经太晚了。啊,我不知道这一点,我很惊讶为什么每个人都投了赞成票,谢谢!这将取消$\u POST的设置,但您仍然可以这样做:过滤输入(input\u POST,'password',filter\u UNSAFE\u RAW)-以及诸如此类的事情。(在我基于FastCGI的PHP安装中,此技术返回实际结果,尽管第一次未设置$u POST!)如果出于安全原因未执行此操作,则我无法理解合法的应用程序。甚至更短的$u POST=[];从技术上讲,它有作用域,因为PHP中的全局作用域不是。听起来你有一个无关的问题。如果你在清除之前阅读了帖子数据,那已经太晚了。啊,我不知道这一点,我很惊讶为什么每个人都投了赞成票,谢谢!这将取消$\u POST的设置,但您仍然可以这样做:过滤输入(input\u POST,'password',filter\u UNSAFE\u RAW)-以及诸如此类的事情。(在我基于FastCGI的PHP安装中,此技术返回实际结果,尽管第一次未设置$u POST!)如果出于安全原因未执行此操作,则我无法理解合法的应用程序。甚至更短的$u POST=[]@Mahn使用PHP过滤器函数的用户不使用$\u POST来访问表单值。因此,清算美元邮政只是一种清算方式