例如,我使用$ _POST变量将数据插入数据库.就在这个查询之前,我有一些测试,如果它们是真的,我想调整那个(隐藏的)$ _POST值.
防爆.
if($baby_dragon_eats_children){
$_POST['hidden_value'] = "grapes";
}
Run Code Online (Sandbox Code Playgroud)
可以为$ _POST ['hidden_value']分配一个新值,然后作为$ _POST传递给另一个函数,并能够访问新的$ _POST ['hidden_value']吗?
谢谢
$ _ POST [ 'consolidate_answers']
Mic*_*ski 23
您可以为其分配值$_POST,但如果这样做,则应在分配点和后续访问点上使用注释非常清楚地记录它.手动操作$_POST可以打破未来程序员(包括你自己)对超全局及其来源的期望.
可能还有其他替代方案,例如:
$my_post = $_POST;
$my_post['hidden_value'] = 12345;
// In a function:
function func() {
// Emulate a superglobal
echo $GLOBALS['mypost']['hidden_value'];
}
Run Code Online (Sandbox Code Playgroud)
Pek*_*ica 11
可以为$ _POST ['hidden_value']分配一个新值,然后作为$ _POST传递给另一个函数,并能够访问新的$ _POST ['hidden_value']吗?
它可以在普通的PHP中.
但是,像Suhosin Patch这样的扩展可能会阻止这种情况.
而且,一般来说感觉不对.$_POST旨在包含原始的传入POST数据 - 没有别的.它不应该被IMO修改.
更好的方法是将计划插入数据库的所有数据提取到数组中,然后在该数组中进行操作.
你可以,它会工作,但不会.
创建一个副本$_POST,对其执行测试并修改它.例如.
$postdata = $_POST;
if ($postdata['somevalue'] != 'someothervalue') $postdata['newvalue'] = 'anothervalue';
// ...
Run Code Online (Sandbox Code Playgroud)
如果你操纵由PHP自动创建的变量,那么当变量不能保存你期望的数据时,它可能会在以后再次出现.