[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как выполнить PHP код из Си?
dsnup
Я пишу расширение для PHP *.so Extension

Из папки \php-5.2.13\php-5.2.13\ext\skeleton

Взял skeleton как за шаблон.

Написать-то написал. Вроде все хорошо.
Хотя я сам PHP кодер, но тут пришлось и с Си связаться.

Осталась последняя задача которую не могу не как решить.

Задача:

из PHP файла qqq.php вызывается функция string_generate($text)

эта функция получет переменную $text с текстом

она ее обрабатывает и в итоге получается что это код PHP

и мне нужно выполнить этот PHP код в самом модуле *.so

и соответственно будет возвращен результат выполнения $text назад в qqq.php


Нужно что-то типа eval() как в PHP, но тут в Си

Или не возможно такое на Си сделать?





Спустя 31 минута, 34 секунды (29.06.2010 - 14:52) tomash написал(а):
dsnup
А нельзя все выполнить в PHP, а уже результат в С отдать?

Спустя 9 минут, 58 секунд (29.06.2010 - 15:02) dsnup написал(а):
в том-то и дело что нет......

Спустя 36 минут, 44 секунды (29.06.2010 - 15:38) sergeiss написал(а):
В Си есть функции выполнения внешнего файла. Можно попробовать вызвать, например, php.exe и передать ему как параметры нужные величины. Полученный результат вернуть процессу, который это всё вызвал.

Вот только как-то криво всё получается, по-моему...

Спустя 31 минута, 30 секунд (29.06.2010 - 16:10) dsnup написал(а):
я на Unix

Спустя 10 минут, 14 секунд (29.06.2010 - 16:20) sergeiss написал(а):
А какая в данном случае разница - юникс или винда?

Спустя 48 минут, 32 секунды (29.06.2010 - 17:09) dsnup написал(а):
это я просто уточнил.
у юникса нет php.exe
можно конечно обратиться к командной строке и там выполнить, но это уже не то получится в итоге.


ок.

давайте другим путем пойдем.


например у меня модуль *.so написанный на Си выполнил обработку строки

возвращает ее в PHP файл
и там функция eval() выполняет строку как код PHP

если перед eval поставить переменную $qaz то можно получить всю строчку от *.so

а мне нужно защитить, чтобы не возможно было перехватить код php который отдается в eval()

на данный момент я придумал два способа контроля :

1. Контролирую размер самого файла qqq.php он должен быть равен ЧЕТКО 20 Кб.

2. в файле qqq.php ровно 74 строчки.
если вставить новую строчку в любую часть файла, то файл уже считается не рабочим.



Что думаете?
Кто может меня обмануть с такими вариантами проверок?

Спустя 4 часа, 10 секунд (29.06.2010 - 21:09) linker написал(а):
Цитата
у юникса нет php.exe

зато есть /usr/bin/php (может отличаться на разных машинах)

Спустя 57 минут, 25 секунд (29.06.2010 - 22:06) Guest написал(а):
как обойти ограничения

1. Контролирую размер самого файла qqq.php он должен быть равен ЧЕТКО 20 Кб.

2. в файле qqq.php ровно 74 строчки.
если вставить новую строчку в любую часть файла, то файл уже считается не рабочим.



как обойти 1 пункт - это не проблема, очень давно знаю как обойти --- это хотя бы спасает от дурака.

а вот 2 пункт я еще так и не придумал как обойти

Спустя 2 минуты, 41 секунда (29.06.2010 - 22:09) linker написал(а):
Дык может все проще сделать, в пхп файле просто написать
eval(string_generate($text));

Спустя 2 часа, 8 минут, 57 секунд (30.06.2010 - 00:18) Guest написал(а):
да-да все верно.
но тут задача получить текст из переменной $text

то есть если исправить сам файл qqq.php в каторой есть эта переменная, то файл не будет работать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.