使用此代码,我使用数据库中的信息创建新文件:
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写入页面,将城市名称写入页面,但我不能(据我所知)对此信息做任何事情。
有人知道怎么做吗?谢谢!
答案 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()