たとえば、ページに次のものがあります/mypage?myvar=oldvalue
$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string'
今$_SESSION['myvar']
は価値がある'a_new_string'
これは設計によるものですか?
参照ではなく値をコピーするにはどうすればよいですか?'myvar'
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! で現在の設定を確認できます。 :)';
これはバグではなく機能です:-)
幸いなことに、php.ini でregister_globals = offを設定してオフにすることができます。
register_globals をオンまたはオフにしてこれをテストしましたが、再現できません。どのバージョンの PHP を使用していますか (私は 5.2.6 を使用しています)。
$_Get['myvar'] は配列項目です $myvar は変数です。これら 2 つの間に関係はありません
($_GET はスーパーグローバル配列です)
$myarry=array('myvar'=>'myvalue');- ここで myvar は配列変数 $myarray $myvar='';- ここで myvar 自体が変数です。
これを実行した後:
<?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) "" }