PHP5 GET变量的可变性和参考

时间:2008-11-19 12:34:15

标签: php variables

我在页面中有以下内容,例如: /mypage?myvar=oldvalue

$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string'

现在$_SESSION['myvar']的值为'a_new_string'

这是设计吗?

如何复制'myvar'而不是对它的引用?

5 个答案:

答案 0 :(得分:2)

这是一个不是错误的功能: - )

幸运的是,您可以将其关闭,在php.ini中设置register_globals = off

答案 1 :(得分:2)

register_globals是魔鬼的发明。幸运的是,在PHP 6.0中它将被完全禁用。这不仅仅是一个巨大的安全问题,它让人们感到困惑。请在你的php.ini中关闭它 register_globals =关闭 更多信息:http://us2.php.net/register_globals 您也可以使用该命令检查当前设置 if(ini_get(register_globals))echo“将其关闭!:)”;

答案 2 :(得分:1)

我用register_globals开启和关闭测试了这个,无法重现它。你使用的是什么版本的PHP(我在5.2.6)。

答案 3 :(得分:0)

运行之后:

<?php
session_start(); 
$_GET['myvar'] = ''; 
$_SESSION['myvar'] = $_GET['myvar']; 
$myvar = 'a_new_string'; 
var_dump($_SESSION); 
?>

在PHP 5.2.6上我得到了这个:

array(1) { ["myvar"]=>  string(0) "" }

答案 4 :(得分:0)

$ _ Get ['myvar']是一个数组项$ myvar是一个变量。这两个之间没有关系

($ _ GET是一个超全局数组)

考虑以下示例

$ myarry = array('myvar'=&gt;'myvalue'); - 这里myvar是数组变量$ myarray中的一个项目 $ myvar =''; - 这里myvar本身就是一个变量。