Из папки \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, а уже результат в С отдать?
А нельзя все выполнить в 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 строчки.
если вставить новую строчку в любую часть файла, то файл уже считается не рабочим.
Что думаете?
Кто может меня обмануть с такими вариантами проверок?
у юникса нет 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 пункт я еще так и не придумал как обойти
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 в каторой есть эта переменная, то файл не будет работать
но тут задача получить текст из переменной $text
то есть если исправить сам файл qqq.php в каторой есть эта переменная, то файл не будет работать