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的感觉:-)