PHP5 GET变量的可变性和引用
我在页面中有以下内容,例如PHP5 GET变量的可变性和引用,php,variables,Php,Variables,我在页面中有以下内容,例如/mypage?myvar=oldvalue $_SESSION['myvar'] = $_GET['myvar']; $myvar = 'a_new_string' 现在$\u会话['myvar']的值为'a\u new\u string' 这是故意的吗 如何复制'myvar'的值而不是它的引用?这是一个功能,而不是一个bug:-) 幸运的是,您可以在php.ini中关闭它,这是一个特性,而不是一个bug:-) 幸运的是,你可以关闭它,在你的php.ini中设置。我
/mypage?myvar=oldvalue
$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string'
现在$\u会话['myvar']
的值为'a\u new\u string'
这是故意的吗
如何复制
'myvar'
的值而不是它的引用?这是一个功能,而不是一个bug:-)
幸运的是,您可以在php.ini中关闭它,这是一个特性,而不是一个bug:-)
幸运的是,你可以关闭它,在你的php.ini中设置。我已经在register\u globals打开和关闭的情况下对此进行了测试,但无法复制它。您使用的是什么版本的PHP(我使用的是5.2.6)。我已经在register\u globals打开和关闭的情况下测试过,无法复制它。您使用的是什么版本的PHP(我使用的是5.2.6)。运行此命令后:
<?php
session_start();
$_GET['myvar'] = '';
$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string';
var_dump($_SESSION);
?>
运行此命令后:
<?php
session_start();
$_GET['myvar'] = '';
$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string';
var_dump($_SESSION);
?>
全球注册是魔鬼的发明。幸运的是,在PHP6.0中,它将被完全禁用。这不仅仅是一个巨大的安全问题,它让人们感到困惑。请在php.ini中使用 寄存器\全局=关闭 更多信息: 您还可以使用命令检查当前设置
如果(ini_get(register_globals))echo“关掉它!:)”;register_globals是魔鬼的发明。幸运的是,在PHP6.0中它将被完全禁用。这不仅仅是一个巨大的安全问题,还会让人感到困惑。请使用 寄存器\全局=关闭 更多信息: 您还可以使用命令检查当前设置
如果(ini_get(register_globals))回显“关机!”:) $\u Get['myvar']是一个数组项$myvar是一个变量。这两者之间没有关系 ($\u GET是一个超全局数组) 考虑下面的例子 $myarry=array('myvar'=>'myvalue');-这里,myvar是数组变量$myarray中的一项
$myvar=''-这里myvar本身就是一个变量。$\u Get['myvar']是一个数组项$myvar是一个变量。这两者之间没有关系 ($\u GET是一个超全局数组) 考虑下面的例子 $myarry=array('myvar'=>'myvalue');-这里,myvar是数组变量$myarray中的一项
$myvar=''-在这里,myvar本身就是一个变量。标题并不是真正的描述性。另外:您在哪里设置myvar?在第一行后面的同一个脚本中?标题不是很有描述性。另外:您在哪里设置myvar?在第一行之后的同一个脚本中?我想这取决于确切的版本。。。。在我链接的页面中,有许多关于register_globals的(用户)警告,例如“如果你操控$user,你也会操控$u会话['user'],我想这就是OP所遭受的痛苦。这听起来确实与register globals有关。您确定已正确禁用它吗?请务必编辑php.ini。我想这取决于确切的版本。。。。在我链接的页面中,有许多关于register_globals的(用户)警告,例如“如果你操控$user,你也会操控$u会话['user'],我想这就是OP所遭受的痛苦。这听起来确实与register globals有关。您确定已正确禁用它吗?编辑php.ini以确保。抱歉,Moranar,我忘了在查询字符串中指定?myvar=oldvalue,您是对的,查询字符串中没有myvar没有任何更改。抱歉,Moranar,我忘了在查询字符串中指定?myvar=oldvalue,您是对的,如果查询字符串中没有myvar,则不会有任何更改。@EoghanM如果您阅读了我的答案,您本可以提前2小时解决它;-)是的,但dh2k使用了“魔鬼的发明”这一短语,这正是我现在对PHP的感受:-)@eoghnam如果你读了我的答案,你本可以早两个小时解决它;-)是的,但是dh2k使用了“魔鬼的发明”这个短语,这就是我现在对PHP的感觉:-)