我可以为PHP中的$ _POST变量赋值吗?

KRB*_*KRB 15 php post

例如,我使用$ _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']

  • 如果您为$ _POST分配一个值,您应该非常清楚地记录文档,因为它不常见,也不被视为"最佳"实践.
  • 如果您有任何PHP的扩展,例如Suhosin Patch ......它可能会阻止此类行为.
  • 处理你自己的数组,不要依赖$ _POST!
  • 如果需要,请复制$ _POST并使用它.

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修改.

更好的方法是将计划插入数据库的所有数据提取到数组中,然后在该数组中进行操作.


Dav*_*dom 5

你可以,它会工作,但不会.

创建一个副本$_POST,对其执行测试并修改它.例如.

$postdata = $_POST;
if ($postdata['somevalue'] != 'someothervalue') $postdata['newvalue'] = 'anothervalue';
// ...
Run Code Online (Sandbox Code Playgroud)

如果你操纵由PHP自动创建的变量,那么当变量不能保存你期望的数据时,它可能会在以后再次出现.