4

在同一页面上,我有

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

如果我回显 $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'] 的值。为什么会这样?

4

5 回答 5

5

可能你已经打开了 register_globals ,这是多年来一直被建议反对的事情:) 详情请参见此处:http: //php.net/manual/en/security.globals.php

于 2013-02-21T12:46:15.633 回答
3

问题可能出register_globals在 php 的 .ini 文件中。关闭它,重新启动php,它应该是固定的。

试试这个来检查代码执行时的设置:

echo ini_get("register_globals");
于 2013-02-21T12:46:19.320 回答
1

您必须在表单声明中设置 method="POST" 属性。并且可能是您启用了 register_globals 选项。

于 2013-02-21T12:46:06.570 回答
1

检查您php.iniregister_globals设置。它很可能设置为打开,您应该将其关闭。

于 2013-02-21T12:46:19.187 回答
1

好吧,如果 register_superglobals 关闭,那么你在你的脚本中做类似的事情

foreach($_REQUEST as $key => $val) // or $_POST or $_GET
    $$key = $val;
于 2013-02-21T12:54:19.130 回答