![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Black_leopard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Всем доброго дня!
Столкнулся с задачей: В админке для определенных элементов прописывают условия отображения на сайте, необходимо чтобы эти условия выполнялись в конструкции if. Т.е. в админке например выставили в определенном поле условие "1 > 2" (упрощенно) Надо чтобы код правильно выполнился
В таком случае выводит true. Пробовал eval() выдает всегда false. Подскажите, пожалуйста, как правильно переменную подставить в условие? Спасибо. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
А неупрощено? Какие условия вообще бывают? Какой сложности, какие переменные и откуда берутся? Для простого и тупого примера - будет работать так
Более быстро по скорости выполнения - пользоваться create_function. В функцию можно и параметры передать. при некоторой ловкости рук. Оба способа имеют серьезный недостаток - если пользователь указал совсем уж корявую строку для выполнения, то вся админка свалится по ошибке компиляции. Напрочь, скорее всего вместе с редактором условия. При удачном расположении рук - локальный апокалипсис гарантирован ![]() Это сообщение отредактировал(а) ksnk - 19.6.2015, 12:16 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Придумался такой в меру разумный вариант
Писался на коленке, без проверки, так что вот. В результате, создается файл вида
В файле сами собой, магическим образом собираются все условия, которые попадаются в базе. Прелесть этого подхода, по сравнению с обычным eval'ом, кроме ужасающе серьезного ускорения, в том, что потенциально можно проверить свежесозданный файл, с помощью запуска exec('php -l <имя файла>'). После чего можно убедиться, что синтаксических ошибок нет и продолжать жить долго и счастливо. Эту проверку предлагаю дописать самостоятельно ![]() Это сообщение отредактировал(а) ksnk - 19.6.2015, 13:48 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
Black_leopard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Спасибо, интересное решение. Сохранил, попозже разберу что к чему тут.
Пока остановился на первом предложенном варианте:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |