我在页面中有以下内容,例如: /mypage?myvar=oldvalue
$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string'
现在$_SESSION['myvar']
的值为'a_new_string'
这是设计吗?
如何复制'myvar'
的值而不是对它的引用?
答案 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本身就是一个变量。