PHP 打开一个文件并给它参数/变量

标签 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 来做到这一点,它确实将城市名称写入页面,但我不能(据我所知)对这些信息做任何事情。

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

最佳答案

$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/

相关文章:

mysql - GROUP BY 逗号分隔列表的成员

mysql - 转义 Node.JS MySQL 问题

ios - 从 Swift 中的另一个类引用 @IBAction 函数内的变量值

python - 获取迭代过程中变量的名称

PHP MYSQL 更新查询与 @variable 不起作用

php - PHP连接到mysql数据库

php - HTML 中的多个类属性

mysql - 无法启动 MySql 服务

php - 最佳日志数据库结构

javascript - 有没有办法打印动态变量?