PHP打开一个文件并为其提供参数/变量

时间:2017-02-22 12:20:02

标签: php mysql variables fopen

使用此代码,我使用数据库中的信息创建新文件:

function getLocations() {
    $query = mysql_query("SELECT DISTINCT `plaats` FROM `plaatsen` ORDER BY `plaats` ");

    while ($row = mysql_fetch_assoc($query)){
        $city = $row['plaats'];

        $handle = fopen( "cities/$city.php",'w');

        echo "<a href='cities/".$row['plaats'].".php' class='col-md-4'>"."<div class='steden'>".$row['plaats']."</div>"."</a>";

        fwrite($handle, '<?php include("../stad.php") ?>');
        fwrite($handle, $city);
    }
} 

输出是多个链接和文件与不同的城市,如:阿姆斯特丹,鹿特丹,海牙。现在,这些页面上的内容必须根据城市的不同而不同。所以基本上页面应该知道它是哪个城市,并且从数据库中下载该城市的内容。

我尝试这样做,将var写入页面,将城市名称写入页面,但我不能(据我所知)对此信息做任何事情。

有人知道怎么做吗?谢谢!

1 个答案:

答案 0 :(得分:0)

$handle = fopen( "cities/$city.php",'w'); - ERK!这对安全性来说真的很糟糕。允许您的web服务器对文件进行写入访问,然后由PHP处理这些文件本身并不是一个漏洞,而是为攻击升级提供了一个载体。

您可能有充分的理由想要在数据库之外缓存内容 - 但使用缓存反向代理或ESI或(作为最后的手段)在PHP代码中实现HTML片段的缓存不要使用PHP代码作为缓存

关于识别PHP代码运行的文件名称的问题 - PHP可以从__FILE__常量获取。 e.g。

<?php

print "I am in " . strtok(basename(__FILE__), '.');

要确定包含层次结构中涉及的文件名,请查看debug_backtrace()