我的php脚本需要从另一个文件加载内容然后替换某些命令。使用以下代码适用于静态页面:
$pageName = 'pages/' . $_REQUEST['url'] . '.php';
$pageContents = file_get_contents($pageName);
$IDCODE = $_SESSION['IDCODE'];
$sql = "SELECT * FROM members WHERE IDCODE = '$IDCODE'";
$qry = mysql_query($sql);
$OK = $qry ? true : false;
$arr = mysql_fetch_array($qry);
foreach ($arr AS $key => $val) {
$pageContents = str_replace('{' . $key . '}', $val, $pageContents);
}
但是,如果要处理的文件是动态的呢? IE它从mysql数据库填充一些文本。
file_get_contents会运行该文件还是只读取其中的字符串?
答案 0 :(得分:0)
如果您通过网络服务器运行该文件的链接,它将被处理。如果直接链接它,您将获得该文件的确切内容。
答案 1 :(得分:0)
相当混乱的代码。
$ pageName ='pages /'。 $ _REQUEST ['url']。 '.PHP';
$ pageContents = file_get_contents($ pageName);
本地文件包含漏洞。
$ OK = $ qry? true:false;
为什么呢?任何你使用$ OK的值你可以同样使用$ qry。并且你永远不会在显示的代码中再次使用$ OK。
没有错误检查,代码中没有注释。
如果要处理的文件是动态的,该怎么办?
WTF?你的意思是你想要将输出重新处理为PHP吗?然后你可以'eval($ pageContents);'但要注意代码注入漏洞。
或者您想将脚本应用于PHP scrpt的输出?然后只需将URL作为参数传递给file_get_contents(),例如
file_get_contents('http://localhost/path/'
. basename($_REQUEST['url'] . '.php');
但实际上调用应该比这更好。两者都是凌乱的解决方案 - 模板解决方案应该就是这样。请仔细阅读(例如)smarty