PHP - $ _POST变量与具有相同名称的变量混合

时间:2013-02-21 12:42:39

标签: php

在我的同一页上

$hello = 'Hello!';
$_POST['hello'] = '123';

如果我回复$ hello,而不是'Hello!'我得到'123'。 我应该如何处理具有相同名称的变量和$ _POST变量?

这是真正问题的一个例子:

我有一个看起来像这样的注册表单(这里是一个缩小的字段示例)。 每个输入字段都有一个标签,标签中的字符串变量与输入名称相同。

<form id="form1" action="post.php">
  <span class="label"><?=$fullname?></span>
  //$fullname='Please enter your name';
  <input name="fullname" id="fullname" type="text">

  <span class="label"><?=$email?></span>
  //$email='Please enter your email';
  <input name="email" id="email" type="text">

  <input name="button1" id="button1" type="submit">
</form>

当我提交表单时,我将其发布到同一页面,然后显示用户填写的值。只有现在,而不是$ fullname显示变量$ fullname的值,它显示$ _POST ['fullname']的值。为什么会这样?

5 个答案:

答案 0 :(得分:5)

可能你已经启用了register_globals,这已经被多年来一直提出建议了:)详情请见此处:http://php.net/manual/en/security.globals.php

答案 1 :(得分:3)

问题可能在于php的.ini文件中的register_globals。关闭它,重新启动php,它应该被修复。

尝试此操作以检查执行代码时的设置:

echo ini_get("register_globals");

答案 2 :(得分:1)

您必须在表单声明中设置method =“POST”属性。也许你已经启用了register_globals选项。

答案 3 :(得分:1)

检查php.ini register_globals设置。它很可能设置为on,你应该关闭它。

答案 4 :(得分:1)

如果register_superglobals已关闭,那么您在脚本中的操作类似

foreach($_REQUEST as $key => $val) // or $_POST or $_GET
    $$key = $val;