在我的同一页上
$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']的值。为什么会这样?
答案 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;