Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Выполнение PHP кода из строки

Андрей Мастер (1967), на голосовании 5 лет назад
Прошу помочь. Вопрос вроде простой, но не пойму как решить. У меня в базе данных в некоторых полях записаны (как текст) имена переменных и функций типа $_SERVER ['HTTP_HOST'] или getenv ("REMOTE_ADDR"), и при формировании страницы он так же выводятся. Как мне заставить их выполняться, чтобы вместо getenv ("REMOTE_ADDR") появился IP-адрес и т. д. Попробовал сделать это функцией eval(), но это приводит к ошибке типа unexpected end of file или вообще ничего не выводит.
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (228946) 5 лет назад
Так просто не получится. Нужно в PHP разбирать строку из базы. Например, если она начинается с getenv(, то берем всё, что в (" "), и подставляем аргументом в функцию getenv. Функция возвращает нужное нам значение, и мы его используем так, словно достали из базы.
Danny Lee Гуру (4947) 5 лет назад
В базу нужно сразу заносить значение, а не функцию. Стоит подумать еще, есть ли смысл нагружать базу или можно обойтись без нее, используя массивы или объекты.
АндрейМастер (1967) 5 лет назад
Я могу базу совсем не использовать, а хранить данные в файлах в в виде JSON, в последующем преобразуя его в массив или объект - не суть. Главное что при выводе содержимого из этого объекта-массива я получаю имена тех же переменных и функций без из их выполнения. Собственно вопрос как их заставить выполниться.
Сразу значение заносить нет смысла, т. к. оно должно меняться на каждом компьютере свое
Саня Семенов Оракул (60469) 5 лет назад
1) скажу сразу идея сохранения в базу всех глобальных переменный с целью последующего восстановления для использования в целях вроде загрузки сессии и т д - бредовая. почему потомучто все перменные там акт уальны только на текущий момент времени и должны расчитываться заново при каждом запуске например какой нибудь ссессион ид или реквест метод
2) то что ты хочешь делается так с помощью var_export можно сделать идеально выпоолняемый потом код т е сохраняешь полученное значение а потом просто пропускаешь эту строку через eval и все
АндрейМастер (1967) 5 лет назад
"Попробовал сделать это функцией eval(), но это приводит к ошибке типа unexpected end of file или вообще ничего не выводит."
Саня Семенов Оракул (60469) вот так надо
Похожие вопросы