Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выполнение РНР-кода, хранимого в переменной 
:(
    Опции темы
NLspieler
Дата 14.12.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Есть переменная
$code 
в ней хранится php-код, который необходимо выполнить. 

В javaScript кажется есть специальная функция для этого, может есть что то подобное и в php?

если нет, то остается только такой выход:
Записать содержимое переменной в файл и загрузить его.



PM MAIL   Вверх
lelik133
Дата 14.12.2009, 16:57 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 5
Всего: 14



PM ICQ   Вверх
NLspieler
Дата 14.12.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(lelik133 @  14.12.2009,  16:57 Найти цитируемый пост)
функция eval http://ru2.php.net/manual/en/function.eval.php

Большое спасибо


Цитата(Ипатьев @  14.12.2009,  16:59 Найти цитируемый пост)
есть, только это называется не метапрограммирование, а ###код

для некоторых очень специфических задач, без этой функции не обойтись.
PM MAIL   Вверх
azesmcar
Дата 14.12.2009, 17:22 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(NLspieler @  14.12.2009,  17:19 Найти цитируемый пост)
для некоторых очень специфических задач, без этой функции не обойтись. 

С трудом вериться, на компиляторах ведь обходятся.
PM   Вверх
Ипатьев
Дата 14.12.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Я сталкивался с такими специфическими задачами.
Это или обход запрета register_globals, или вычисление введенной пользователем формулы.
PM MAIL   Вверх
djamshud
Дата 14.12.2009, 17:42 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



azesmcar, я как-то не постеснялся написать обвязку на баше, который вызывал скрипт пхп, который генерировал и компилировал с++. Конечно можно было обойтись и без этого, но так было _намного проще_, а на элегантность со скоростью было класть. Вот только вспомнить бы, что именно я делал...


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
azesmcar
Дата 14.12.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(djamshud @  14.12.2009,  17:42 Найти цитируемый пост)
azesmcar, я как-то не постеснялся написать обвязку на баше, который вызывал скрипт пхп, который генерировал и компилировал с++. Конечно можно было обойтись и без этого, но так было _намного проще_, а на элегантность со скоростью было класть. Вот только вспомнить бы, что именно я делал... 

Вспомнилась фраза одного нашего "Младшего Научного Сотрудника"
Цитата

- Ты знаешь Erlang?
- нет
- И ТЫ ЭТИМ ГОРДИШЬСЯ???? smile 

Что я хотел сказать?? ах да

И ТЫ ЭТИМ ГОРДИШЬСЯ???? smile 
PM   Вверх
NLspieler
Дата 15.12.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Теперь стало все понятно, для выполнения кода, хранимого в переменной, используется функция eval.
Это считается плохим стилем прогроммирования, кроме нескольких исключений.

Но, появляется новый вопрос, почему тему переименовали.
Разве описанная мною задача - это не метапрограммирование?
Что же тогда это такое, на примере php?
PM MAIL   Вверх
nerezus
Дата 15.12.2009, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Разве описанная мною задача - это не метапрограммирование?
 
"Метапрограммирование" на PHP как правило имеет такой вид. 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Sanchezzz
Дата 15.12.2009, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



nerezus  - Жесть как страшно от одной мысли. Пишешь да пишешь свой велосипед и выкладываешь его на обозрение со спокойной душой и в один прекрасный день натыкаешься на свой код на ###код.ру Сайт зачетный smile 



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 15.12.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(nerezus @  15.12.2009,  06:19 Найти цитируемый пост)
"Метапрограммирование" на PHP как правило имеет такой вид.  

 smile  smile  smile Это же шедевр, индусы как всегда на высоте.

Кстати насчет 
Цитата(Ипатьев @  14.12.2009,  17:23 Найти цитируемый пост)
обход запрета register_globals

обход этого запрета я имел радость наблюдать в одном прекраснейшем проекте, написанном разумеется индусами. Я 4 дня искал место, в котором инициализируется переменная, оказалось все очень банально, парень решил не заморачиваться с присваиванием и просто напросто вызвал extract($_POST) в одной из функций, которая вызывается функцией, которую вызывает другая функция..и так далее.

Это сообщение отредактировал(а) azesmcar - 15.12.2009, 07:07
PM   Вверх
Ипатьев
Дата 15.12.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



azesmcar, речь, не об extract речь о eval 
PM MAIL   Вверх
azesmcar
Дата 15.12.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Цитата(Ипатьев @  15.12.2009,  09:04 Найти цитируемый пост)
azesmcar, речь, не об extract речь о eval  

я это понял. а я привел в пример другой обход запрета register_globals.

Добавлено через 2 минуты и 32 секунды
Цитата

И самый простой метод — extract().

Весь код нашего примера будет выглядеть так:

extract($_REQUEST);

ну вот..и про extract не забыли smile 

Это сообщение отредактировал(а) azesmcar - 15.12.2009, 09:11
PM   Вверх
djamshud
Дата 15.12.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



>И ТЫ ЭТИМ ГОРДИШЬСЯ????

Не горжусь, но и не осуждаю. Это было лучшее решение из тогда доступных. В продакшен это конечно же не пошло, просто было временной подпоркой.

Я конечно не отрицаю, что это нехорошо, но иногда просто приходится побыть плохим мальчиком:).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
nerezus
Дата 15.12.2009, 10:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Это было лучшее решение из тогда доступных. 
 Скорее всего тебе просто так кажется, т.к. ты не нашел нормального решения.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.