Изменчивость и ссылки на PHP5 GET-переменные - PullRequest
0 голосов
/ 19 ноября 2008

У меня есть следующее на странице, например /mypage?myvar=oldvalue

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

Теперь $_SESSION['myvar'] имеет значение 'a_new_string'

Это задумано?

Как можно скопировать значение из 'myvar', а не ссылку на него?

Ответы [ 5 ]

2 голосов
/ 19 ноября 2008

register_globals это изобретение дьявола. К счастью, в PHP 6.0 он будет полностью отключен. Это была не просто огромная проблема безопасности, это сбивает людей с толку. Пожалуйста, отключите его в вашем php.ini используя register_globals = Off Дополнительная информация: http://us2.php.net/register_globals Также вы можете проверить текущие настройки с помощью команды if (ini_get (register_globals)) echo "выключите его!:) ';

2 голосов
/ 19 ноября 2008

Это особенность, а не ошибка: -)

к счастью, вы можете отключить его, установите register_globals = off в вашем php.ini

1 голос
/ 19 ноября 2008

Я проверил это с помощью register_globals и не могу воспроизвести Какую версию PHP вы используете (я на 5.2.6).

0 голосов
/ 21 марта 2011

$ _ Get ['myvar'] - элемент массива $ myvar - переменная. Между этими двумя

нет никакой связи

($ _ GET - суперглобальный массив)

рассмотрим следующий пример

$ myarry = array ('myvar' => 'myvalue'); - здесь myvar - это элемент в переменной массива $ myarray $ myvar = ''; - здесь myvar сама будет переменной.

0 голосов
/ 19 ноября 2008

После запуска этого:

<?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) "" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...