Изменяемость и ссылка на переменные PHP5 GET

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

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

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

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

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

Название не совсем описательное. Плюс: где вы устанавливаете мивар? в том же скрипте сразу после первой строки?

Adriano Varoli Piazza 19.11.2008 15:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
1 346
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

Я полагаю, это зависит от точной версии .... На странице, на которую я указал, есть многочисленные (пользовательские) предупреждения о register_globals, такие как «Если вы манипулируете $ user, вы также будете манипулировать $ _SESSION ['user']», которые я Я понял, от чего страдает ОП

Pat 19.11.2008 15:57

Это действительно похоже на регистрацию глобальных объектов. Вы уверены, что правильно отключили? Отредактируйте php.ini, чтобы быть уверенным.

troelskn 19.11.2008 16:10

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

После запуска:

<?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) "" }

Извините, Моранар, я забыл указать, что у меня есть? Myvar = oldvalue в строке запроса. Вы правы, что без myvar в строке запроса нет изменений.

EoghanM 19.11.2008 15:59
Ответ принят как подходящий

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

@EoghanM, если бы вы читали мой ответ, вы могли бы решить его на 2 часа раньше ;-)

Pat 19.11.2008 21:22

Да, но dh2k использовал фразу «изобретение дьявола», как я сейчас отношусь к PHP :-)

EoghanM 20.11.2008 15:42

$ _Get ['myvar'] - это элемент массива. $ Myvar - это переменная. Между этими двумя нет никакой связи.

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

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

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

Другие вопросы по теме