【问题标题】:Is it possible to change php source code directly from php?是否可以直接从 php 更改 php 源代码?
【发布时间】:2015-11-16 12:03:04
【问题描述】:

例子:

来源:

$var=X

网址调用:

 ....?changeSourceTo:Y

php:

//do something? (what)

来源:

$var=Y

这对于在不打开源代码和不将下一次调用相同的参数传递给 url 的情况下快速更改源代码应该很有用.... (我知道我可以使用带有 var 参数的文件,如果 $_GET['var'] 更改文件,或者更好地设置数据库......)

【问题讨论】:

  • 这是可行的,但不要这样做!万一有人注意到你可以做到这一点,你就为任何黑客打开了大门。
  • 您是否只是想从服务器向页面添加 HTML 内容而不重新加载页面?

标签: php variables get


【解决方案1】:

将不同版本的代码放到不同的文件中,使用require($changeSourceTo);指定加载哪个文件。

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

【讨论】:

    【解决方案2】:

    你可以做到,是的。只需使用 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 提到的,修改它的方式要非常小心。例如,如果我的示例可以使用$_GET[] 进行修改,那将是非常不安全的。

    【讨论】:

    • 打开和重写自己执行这些操作的文件没有问题吗?
    • 不,完全没有问题。当然如果你和我尝试编辑/保存同一个文件,最后一个保存的会覆盖之前的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多