使用此代码,我使用数据库中的信息创建新文件:
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 来做到这一点,它确实将城市名称写入页面,但我不能(据我所知)对这些信息做任何事情。
有人知道怎么做吗?谢谢!
最佳答案
$handle = fopen( "cities/$city.php",'w');
- 错误!这对安全来说真的很糟糕。允许您的网络服务器 uid 对文件进行写访问,然后由 PHP 处理这些文件本身并不是一个漏洞,而是为攻击升级提供了一个载体。
您可能有充分的理由想要在数据库之外缓存内容 - 但请使用缓存反向代理或 ESI 或(作为最后的手段)在您的 PHP 代码中实现 HTML 片段缓存 不要使用PHP 代码作为缓存。
关于识别运行 PHP 代码的文件名的问题 - PHP 可以从 __FILE__
常量中获取它。例如
<?php
print "I am in " . strtok(basename(__FILE__), '.');
要确定包含层次结构中涉及的文件名,请查看 debug_backtrace()
关于PHP 打开一个文件并给它参数/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391320/