Обработка внешних переменных с точками в именах

Задача
Необходимо обработать переменную с точкой в имени, но после того как форма представлена, не удается найти эту переменную.

Решение
Замените точку в имени переменной на символ подчеркивания. Например, если в форме находится элемент ввода с именем foo.bar, то доступ к нему в PHP осуществляется как к переменной $_REQUEST['foo_bar'].

Обсуждение
В PHP точка выступает в качестве оператора конкатенации строк, поэтому переменная формы, названная animal.height, автоматически преобразуется в переменную с именем animal_height, что позволяет избежать создания неопределенности для анализатора. Элементу $_REQUEST['animal.height'] такая неопределенность не свойственна, но из соображений преемственности и совместимости преобразование происходит независимо от значения параметра register_globals.

Как правило, автоматическое преобразование имени переменной встречается при обработке изображений, используемых для представления формы. Допустим, у вас есть карта, оказывающая расположение вашего магазина, и вы хотите, чтобы пользователь щелкнул по ней для получения дополнительной информации. Приведем пример:


Когда пользователь щелкает по изображению, то координаты x и y передаются как переменные locations.x и locations.y.


Поэтому в PHP для определения координат точки, на которой пользователь выполнил щелчок, нужно проверить элементы [_REQUEST['locations_x'] и $_REQUEST['locations_y'].

С помощью ряда манипуляций можно создать переменную внутри PHP с точкой в имени:

${"a.b"} = 123; // принудительное приведение с помощью {}
$var = "c.d"; // косвенное именование переменной
$$var = 456;
print ${"a.b"} . "\n";
print $$var . "\n";
123
456

Обычно это не приветствуется из-за неудобного синтаксиса.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Защита от многократной отправки одной и той же формы
Использование элементов формы с несколькими вариантами значений
Кэширование запросов и результатов
Обработка загруженных файлов
Обработка информации, полученной из формы

Вернуться в раздел: PHP / 9. Формы