Запись php кода в базу

VANHALEN

Новичок
Сталкнулся вот с такой задачей. Удобно в мойм случае прописать вызов функции в базу данных. Потом в нужном месте он выполняется через eval. Это что-то типа виджетов на сайте, вызываемых в нужном месте. Но хочется спокойно менять это дело из админки сайта, а не в базе. Вопрос в том, как безопасно отправить код туды. Достаточно ли будет mysql_real_escape_string или нет? Конечно можно в базе хранить только названия, которые будут вызывать функции, но мне в данный момент удобно именно так.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Не надо хранить php код в базе данных и eval'ить его. Просто не надо. Потом у тебя будит дикие грабли с отладкой и поддержкой.
 
  • Like
Реакции: KorP

AmdY

Пью пиво
Команда форума
VANHALEN
достаточно mysql_real_escape_string

в целях упощения отладки и нормальной работы apc, я бы советовал код из базы не эвалить, а сбрасывать в файл и инклудить уже сам файл.
 

VANHALEN

Новичок
PHP:
в целях упощения отладки и нормальной работы apc, я бы советовал код из базы не эвалить, а сбрасывать в файл и инклудить уже сам файл.
Да, я обязательно так и сделаю в будущем. Но инклудить буду по алиасу из базы. Впринципе всё верно. Чтобы вызвать функцию её сначала надо написать и уж точно не проблемма потом написать функцию инклуда и вызова функции. Но просто сейчас мне так нужно..
Ну и есть ещё одно но. Параметры то передавать как? Создавать дополнительные поля в базе? А ведь не известно какие я функции буду вызывать. Конечно менюшку вызвать хватит, а так.. Вобщем заранее много подготавливать. А так я ща подключил новую функцию, типа "последние статьи" и не напрюсь.. Просто создать виджет, написал название, класс и вызвал last_articles(категория, сколько штук выводить); и усё..
 

VANHALEN

Новичок
Кстати заметил.. всё джумла получается :) У них тоже параметры функции записаны в базе.. Только в одном поле, скопом
А.. Блин, чуть не забыл.. СПАСИБО!
 

fixxxer

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

(проверять лень, предполагаю, что будет работать, если регистрировать как local stream и реализовать целиком, включая stat)
 
Сверху