Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以直接从php更改php源代码?_Php_Variables_Get - Fatal编程技术网

是否可以直接从php更改php源代码?

是否可以直接从php更改php源代码?,php,variables,get,Php,Variables,Get,例如: 资料来源: $var=X $var=Y url调用: ....?changeSourceTo:Y php: 资料来源: $var=X $var=Y 这对于快速更改源代码非常有用,无需打开源代码,也无需将同一参数传递给url。。。。 (我知道我可以使用带有var参数的文件,如果$_GET['var']更改文件,或者最好设置一个数据库…将不同版本的代码放入不同的文件中,并使用require($changeSourceTo)指定要加载的文件 我应该补充一点,这会带来一些固有的安全风

例如:

资料来源:

$var=X
$var=Y
url调用:

 ....?changeSourceTo:Y
php:

资料来源:

$var=X
$var=Y
这对于快速更改源代码非常有用,无需打开源代码,也无需将同一参数传递给url。。。。
(我知道我可以使用带有var参数的文件,如果$_GET['var']更改文件,或者最好设置一个数据库…

将不同版本的代码放入不同的文件中,并使用
require($changeSourceTo)
指定要加载的文件


我应该补充一点,这会带来一些固有的安全风险,因为用户能够通过请求指定文件系统路径和修改代码,这两种方式都可能被攻击者滥用。所以,也许可以在开发中使用,但要确保它不会上线。

你可以做到,是的。只需使用
fopen()
从文件内部打开.php文件,修改所需内容,然后保存(覆盖它)

因此,如果您有
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提到的,修改它的方式要非常小心。例如,如果我的示例可以用
$\u GET[]
修改,那将是非常不安全的。

这是可行的,但不要这样做!如果有人注意到你可以这样做,你已经为任何黑客打开了大门。你只是想在不重新加载页面的情况下从服务器向页面添加HTML内容吗?打开和重写执行这些操作的文件没有问题?不,根本没有问题。当然,如果您和我尝试编辑/保存同一个文件,最后保存的文件将覆盖上一次编辑。