Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 完全清除_POST数组_Php - Fatal编程技术网

Php 完全清除_POST数组

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变量,请将其重新声明为空数组:

我想要完全清晰的$\u POST数组内容,我在internet上看到的所有示例如下所示:

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来访问表单值。因此,清算美元邮政只是一种清算方式