Jump to main content Jump to doc navigation

Что такое @EVAL привязка?

@EVAL Привязка выполняет указанный код PHP. Это должно использоваться с осторожными мерами безопасности.

Важно: привязка @EVAL устарела и удалена в MODX 3.0.

Синтаксис

@EVAL php_code_here

Использование

Просто поместите оператор PHP после тега @EVAL:

@EVAL return "The time stamp is now ".time();
@EVAL $a = 'dog'; return $a;

Примеры

Отображение похожих постов

Есть целая страница, показывающая пример использования привязки EVAL для выполнения сниппета: Создание поля множественного выбора для связанных страниц в вашем шаблоне.

db-driven input-option-values используя rowboat

Допустим, мы хотим иметь выпадающий список для выбора идентификатора пользователя по имени пользователя. Требования: The rowboat-snippet.

Сначала мы создаем новый чанк для наших опций и называем его «userOption» следующим кодом:

[[+username]]==[[+id]]

Затем создайте TV выпадающий список с такими параметрами ввода:

@EVAL return '-- choose a user --||' . $modx->runSnippet('Rowboat',array('table'=>'modx_users','tpl'=>'userOption','outputSeparator'=>'||'));

Безопасность

Оператор eval() вызывает удивление у всех, кто связан с безопасностью: операторы eval печально известны своей эксплуатацией, поэтому рекомендуется найти другой способ сделать то, что вы пытаетесь сделать, но этот контекст поддерживается MODX. Если я позволю своему циничному уму пофантазировать, позвольте мне нарисовать одно бедственное обстоятельство: какой-то веб-пользователь вашего приложения MODX входит в систему и имеет доступ к полю, которое выполняется привязкой EVAL. Этот гнусный пользователь может проверить некоторые неприятные операторы unlink() или rmdir () и уничтожить файлы вашего веб-сервера, или прочитать конфиденциальные файлы в любом месте на веб-сервере, к которому у PHP есть доступ. Будьте осторожны с этим!

К счастью, мне не удалось unlink() файл с помощью привязки @EVAL ... но я уверен, что есть люди, которые умнее меня ...

Смотрите также