0

たとえば、ページに次のものがあります/mypage?myvar=oldvalue

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

$_SESSION['myvar']は価値がある'a_new_string'

これは設計によるものですか?

参照ではなくをコピーするにはどうすればよいですか?'myvar'

4

5 に答える 5

2

register_globals は悪魔の発明です。幸いなことに、PHP 6.0 では完全に無効になります。これは単なるセキュリティ上の大きな問題ではなく、人々を混乱させます。register_globals = Off を使用して php.ini でオフにしてください。詳細情報: http://us2.php.net/register_globals また、コマンド if (ini_get(register_globals)) echo "turn it off! で現在の設定を確認できます。 :)';

于 2008-11-19T14:24:29.840 に答える
2

これはバグではなく機能です:-)

幸いなことに、php.ini でregister_globals = offを設定してオフにすることができます。

于 2008-11-19T12:44:17.000 に答える
1

register_globals をオンまたはオフにしてこれをテストしましたが、再現できません。どのバージョンの PHP を使用していますか (私は 5.2.6 を使用しています)。

于 2008-11-19T12:45:39.603 に答える
0

$_Get['myvar'] は配列項目です $myvar は変数です。これら 2 つの間に関係はありません

($_GET はスーパーグローバル配列です)

次の例を検討してください

$myarry=array('myvar'=>'myvalue');- ここで myvar は配列変数 $myarray $myvar='';- ここで myvar 自体が変数です。

于 2011-03-21T05:48:33.700 に答える
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) "" }
于 2008-11-19T12:45:58.887 に答える