| |
|
|
| | В типовом скрипте встретил такую конструкцию:
foreach ($HTTP as $Key=>$Value) { $$Key = $Value; }
|
Возникает два вопроса.
1. Два знака $$ - это синтаксическая ошибка или это какой-то приём?
2. В чем может быть смысл этого кода? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 14:27)
| | | Видел, прием какой-то. | |
| |
|
|
| |
|
|
| |
для: LINKIN
(07.06.2008 в 14:28)
| | | Символическая ссылка ($$) , пример игрушки
<?
$run = "красный";
$blue ="синий";
$color = "run"; //символическая ссылка
echo "символическая ссылка color(run): ".$$color. " "; //выводит 'красный'
$$color = 'не синий';
echo "<br>Забавное Переопределение Запись \$\$color выводится как $$color и \$\$color = ".$$color; //получим $run = не синий
?> | |
| |
|
|
| |
|
|
| |
для: LINKIN
(07.06.2008 в 14:28)
| | | Полностью код выглядит так:
//Устанавливаем метод приема данных
if($SuccessMethod=='POST') $HTTP = $HTTP_POST_VARS;
else $HTTP = $HTTP_GET_VARS;
//Преобразуем массив в переменные
foreach ($HTTP as $Key=>$Value) { $$Key = $Value; }
|
Что он делает? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 14:49)
| | | Какое-то подобие эмуляции режима register_globals. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 14:49)
| | | Не делайте так! | |
| |
|
|
| |
|
|
| |
для: mihdan
(07.06.2008 в 15:34)
| | | Этот код установлен в стандартном скрипте платёжной системы. Мне тоже не понравилась эта комбинация, хотя я и сам не знаю чем.
А что конкретно здесь некорректно? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 16:48)
| | | register_globals и, соответственно, все его эмуляции - считается устаревшим. Обращение к переменным, передаваемым методами POST/GET или через cookies, должно происходить через массивы $_POST, $_GET, $_COOKIE. В крайнем случае через $_REQUEST. | |
| |
|
|
| |
|
|
| |
для: BinLaden
(07.06.2008 в 16:52)
| | | Однако по другому решить задачу у меня не получается...
Получаемый массив $HTTP содержит непределенное количество переменных: $LMI_PAYMENT_NO, $LMI_SYS_INVS_NO, $LMI_SYS_TRANS_NO...
Как мне извлечь их из массива? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 23:30)
| | | Пользуйтесь на здоровье и таким способом, только помните, что любая из переменных, поступающих из формы, может быть подделана и её необходимо проверять соответствующим образом. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 23:30)
| | | > Как мне извлечь их из массива?
В принципе, для этого существует extract() | |
| |
|
|
| |
|
|
| |
для: BinLaden
(07.06.2008 в 16:52)
| | | >считается устаревшим
Официально не слышал, чтобы кто-то устаривал. Если говорить насчет безопасности, то да. | |
| |
|
|
| |
|
|
| |
для: AcidTrash
(08.06.2008 в 00:03)
| | | > Официально не слышал, чтобы кто-то устаривал
http://php.net/manual/en/security.globals.php:
«This feature has been DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged» | |
| |
|
|
| |
|
|
| |
для: Владимир55
(07.06.2008 в 14:27)
| | | >1. Два знака $$ - это синтаксическая ошибка или это какой-то приём?
Это динамическое формирование переменных.
>2. В чем может быть смысл этого кода?
Преобразование элементов ассоциативного массива в переменные. | |
| |
|
|