我想要完全清楚$ _POST数组内容,我在互联网上看到的所有示例都是这样的:
if (count($_POST) > 0) {
foreach ($_POST as $k=>$v) {
unset($_POST[$k]);
}
}
请告诉我,这个变种会不会更好? (作为节约资源的观点)
if (count($_POST) > 0) {
$_POST = array();
}
是不是?
答案 0 :(得分:52)
是的,没关系。 $_POST
只是另一个变量,除了它有(super)全局范围。
$_POST = array();
......就够了。循环没用。最好将它保存为数组而不是取消设置,以防其他文件试图读取它并假设它是一个数组。
答案 1 :(得分:5)
要取消设置$_POST
变量,请将其重新声明为空数组:
$_POST = array();
答案 2 :(得分:3)
到目前为止,解决方案无效,因为POST数据存储在标头中。重定向根据这篇文章解决了这个问题。
How to delete $_POST variable upon pressing 'Refresh' button on browser with PHP?
答案 3 :(得分:2)
它可能看起来过于尴尬,但你最好不要一次取消一个元素而不是整个$ _POST数组。 这就是为什么:如果你正在使用面向对象的编程,你可能有一个类使用$ _POST ['alpha']而另一个类使用$ _POST ['beta'],如果你取消设置数组在首次使用后,将无效在其他类中使用。为了安全起见而不是用脚射击自己,只需放入一个方法来取消你刚刚使用过的元素:例如:
private function doUnset()
{
unset($_POST['alpha']);
unset($_POST['gamma']);
unset($_POST['delta']);
unset($_GET['eta']);
unset($_GET['zeta']);
}
只需调用方法并取消设置仅传递给变量或参数的超全局元素。然后,可能需要超全局元素的其他类仍然可以使用它们。
然而,你明智的做法是尽快取消超级球 被传递给封装对象。
答案 4 :(得分:0)
unset()
和初始化:unset($_POST);
$_POST = array();
或者在一个声明中:
unset($_POST) ? $_POST = array() : $_POST = array();
但是你想要这样做的原因是什么?
答案 5 :(得分:0)
要回答“为什么”有人可能会使用它,我很想使用它,因为我在页面刷新后或从一个页面到另一个页面时存储了$ _POST值。我的感觉告诉我这不是一个好习惯,但它仍然有用。