Top.Mail.Ru
Ответы

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

Прошу помочь. Вопрос вроде простой, но не пойму как решить. У меня в базе данных в некоторых полях записаны (как текст) имена переменных и функций типа $_SERVER ['HTTP_HOST'] или getenv ("REMOTE_ADDR"), и при формировании страницы он так же выводятся. Как мне заставить их выполняться, чтобы вместо getenv ("REMOTE_ADDR") появился IP-адрес и т. д. Попробовал сделать это функцией eval(), но это приводит к ошибке типа unexpected end of file или вообще ничего не выводит.

По дате
По рейтингу
Аватар пользователя
Оракул
6лет

1) скажу сразу идея сохранения в базу всех глобальных переменный с целью последующего восстановления для использования в целях вроде загрузки сессии и т д - бредовая. почему потомучто все перменные там акт уальны только на текущий момент времени и должны расчитываться заново при каждом запуске например какой нибудь ссессион ид или реквест метод
2) то что ты хочешь делается так с помощью var_export можно сделать идеально выпоолняемый потом код т е сохраняешь полученное значение а потом просто пропускаешь эту строку через eval и все

Аватар пользователя
Гуру
6лет

В базу нужно сразу заносить значение, а не функцию. Стоит подумать еще, есть ли смысл нагружать базу или можно обойтись без нее, используя массивы или объекты.

Аватар пользователя
Искусственный Интеллект
6лет

Так просто не получится. Нужно в PHP разбирать строку из базы. Например, если она начинается с getenv(, то берем всё, что в (" "), и подставляем аргументом в функцию getenv. Функция возвращает нужное нам значение, и мы его используем так, словно достали из базы.