![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Zipo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 4.11.2003 Репутация: нет Всего: 0 |
Как можно исполнить php-код полученный в результате исполнения другого php-кода.
Есть ли такая функция в php? Метод: Записать в файл и потом его проинклудить не сильно подходит. |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
eval
Это сообщение отредактировал(а) Secandr - 19.1.2004, 19:15 |
|||
|
||||
| lifer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 17.1.2004 Где: Kiev, Ukraine Репутация: нет Всего: нет |
Eval(string)
Eval берет содержимое строки аргумента и, обрабатывает, это подобно мини PHP/FI скрипту. Выполняется как отдельный скрипт PHP/FI. Любые установки или обращения к переменным внутри eval будут из глобальной области видимости текущего контекста оператора eval. Для строковых аргументов выполняется подстановка переменных замена выполнена на параметрах ряда, таким образом если в выражении нужно использовать переменные , то их нужно экранировать. Несколко примеров:
Это сообщение отредактировал(а) lifer - 19.1.2004, 19:32 |
|||
|
||||
| Zipo |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 4.11.2003 Репутация: нет Всего: 0 |
спсб
Это не извращение. Давай обсудим. Коротко: Будет движок для сайта. Всю инфу о сайте (темплейты,сурсы) будет хранить в БД. Суть в извлечении кода из БД и исполнение его. Если есть идеи, то прошу изложить.
экранирование не обязательно. В данном случае без него перед исполнением eval $a будет уже считаться переменной и будет заменена на соотв. значение. eval('$a=1; echo $a;'); |
||||
|
|||||
| lifer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 17.1.2004 Где: Kiev, Ukraine Репутация: нет Всего: нет |
Ну так ты ж апостроф вместо кавычек подставил. Переменные, внутри строки, заключенной в апострофы, не интерполируются. Это сообщение отредактировал(а) lifer - 19.1.2004, 20:21 |
|||
|
||||
| Zipo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 4.11.2003 Репутация: нет Всего: 0 |
да я про тоже это был пример |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
Zipo Смысл хранить темплейты в БД? Темплейты - вещь редко изменяемая, и если её хранить в файлах, то работает немного быстрее.
|
|||
|
||||
| Zipo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 4.11.2003 Репутация: нет Всего: 0 |
дабы не входить в шок при поиске нужного для редактирования. И это, немного, несравнимо мало. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 7 Всего: 32 |
Лучше переделать движок сайта. Eval - это воистину изврат, работает очень медленно.
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
Zipo Структурируй шаблоны. Или храни сами шаблоны в БД, а обробатывай их следующим образом:
Шаблон из БД читаешь:
Работать будет быстрее. |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
MuToGeN
ну почему же изврат, вот vBulletin на eval работает - шаблоны так парсит имхо удобно читать такой шаблон: <table> <tr><td>$user[name] <td>$user[usergroup] </table> а? ) |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 7 Всего: 32 |
это через echo скорее пропускается, чем через eval.
удобно-то удобно, но время CPU тоже иногда жалко... -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Zipo |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 4.11.2003 Репутация: нет Всего: 0 |
Шаблоны и php код будут хранится в разных местах. И будут связываться средствами движка.
Суть в хранении всего кода сайта в БД. Кроме картинок и подобного. Т.е. на винте будет только движок. если честно, то я не заметил тормозов при использовании eval:
результат:
Это сообщение отредактировал(а) Zipo - 20.1.2004, 19:21 |
||||
|
|||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 7 Всего: 32 |
Мдя... Видимо, его уже оптимизировали неплохо... Сам тестил давно, может, еще на PHP 3
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
не надо использовать eval
такие движки податливее всего к элементарному взлому. вот представь такую ситуацию. у тебя по какой-то тех пречине произошел збой в БД и при этом включен register_globals. переменная не обновится, а ты её проэвалиш. всё. двери открыты. не надо юзать eval. можно и без него обойтись. не дороже будет стоить это уж точно. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
![]()
|
| Правила форума "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. |