例如,我使用$ _POST变量将数据插入数据库。就在这个查询之前,我有一些测试,如果它们是真的,我想调整那个(隐藏的)$ _POST值。
实施例
if($baby_dragon_eats_children){
$_POST['hidden_value'] = "grapes";
}
可以为$ _POST ['hidden_value']分配一个新值,然后作为$ _POST传递给另一个函数,并且能够访问新的$ _POST ['hidden_value']吗?
由于
$ _ POST [ 'consolidate_answers']
答案 0 :(得分:23)
您可以为$_POST
分配值,但是如果您这样做,则应该在分配点和后续访问点上使用注释非常清楚地记录它。手动操作$_POST
可以打破未来程序员(包括你自己)对超全局内容及其来源的期望。
可能还有其他选择,例如:
$my_post = $_POST;
$my_post['hidden_value'] = 12345;
// In a function:
function func() {
// Emulate a superglobal
echo $GLOBALS['mypost']['hidden_value'];
}
答案 1 :(得分:11)
可以为$ _POST ['hidden_value']分配一个新值,然后作为$ _POST传递给另一个函数,并且能够访问新的$ _POST ['hidden_value']吗?
它可以在正常的PHP中。
但是,像Suhosin Patch这样的扩展程序可能会阻止此操作。
另外,一般来说感觉不对。 $_POST
旨在包含原始的传入POST数据 - 没有别的。它不应该被IMO修改。
更好的方法是将计划插入数据库的所有数据提取到数组中,然后在该数组中进行操作。
答案 2 :(得分:5)
你可以,它会起作用,但不会。
创建$_POST
的副本,对其执行测试并修改它。例如。
$postdata = $_POST;
if ($postdata['somevalue'] != 'someothervalue') $postdata['newvalue'] = 'anothervalue';
// ...
如果你操纵由PHP自动创建的变量,那么当变量没有保存你期望的数据时,它可能会在以后再次出现。
答案 3 :(得分:1)
寻找替代方案!
$ _POST变量有明确的责任。不要滥用其全球主义。
我认为不要滥用全球主义,即使这意味着改变你的设计(或者想到)。
但如果您选择不这样做,那么请考虑根据您的需求创建专用的全局注册表。 不要操纵语言内置插件。