2015-11-16 2 views
2

Пример:Возможно ли изменить исходный код php непосредственно из php?

источник:

$var=X 

URL вызова:

....?changeSourceTo:Y 

PHP:

//do something? (what) 

источник:

$var=Y 

Это должно быть полезно для быстрой смены исходного кода без его открытия и без передачи следующего вызова тем же параметром в url .... (Я знаю, что я мог бы использовать файл с параметром var, а если $ _GET ['var'] изменить файл или, может быть, лучше настроить базу данных ...)

+1

это выполнимо, но не делайте этого! Если кто-то замечает, что вы можете это сделать, вы только что открыли дверь для любого хакера. – Henrik

+0

Вы просто хотите добавить HTML-контент на страницу с сервера без перезагрузки страницы? – Terminus

ответ

1

Вы можете это сделать, да. Просто откройте файл .php изнутри файла, используя fopen(), измените то, что вам нужно, а затем сохраните (перезапишите его).

Так что если у вас есть test.php с этим кодом:

<? 
$x = 1; 
$myfile = fopen('test.php', 'w'); 
$txt = '<?$x=2;echo $x?>'; 
fwrite($myfile, $txt); 
fclose($myfile); 
echo $x; 
?> 

Первый раз, когда вы запустите его, вы увидите «1». Если вы перезагрузите страницу, вы увидите «2». Это может быть сложно, если у вас много кода, и в этом случае я бы предложил разделить файл на «штуки» и использовать их с include, так что вы можете изменить небольшую часть, в которой вы действительно нуждаетесь.

Как указано Steve, будьте очень осторожны, как вы его модифицируете. Если бы мой пример мог быть изменен с помощью $_GET[], например, это было бы крайне опасно.

+0

Нет проблем при открытии и перезаписи файла, который выполняет эти операции самостоятельно? – Francesco

+0

Нет, проблем нет. Конечно, если вы и я попытаемся отредактировать/сохранить тот же файл, последний, кто сохранит, перезапишет предыдущее редактирование. – LuBre

2

Поместите различные версии кода в разные файлы и используйте require($changeSourceTo);, чтобы указать, какой файл загрузить.

Я должен добавить, что это сопряжено с несколькими собственными рисками безопасности, поскольку пользователь может указать пути файловой системы и изменить код через запрос, оба могут быть открыты для злоупотреблений злоумышленником. Так что, возможно, используйте в dev, но убедитесь, что он не идет вживую.

Смежные вопросы