我正在开发的网站使用“标题”和“页脚”模板。这些模板包含在网站的每个页面上。标题模板打开HTML并包含完整的 head 标记,然后打开 body 标记。页脚模板关闭 body 标记,然后关闭HTML。基本结构如下:
<?php
//Set the current page name so it can be highlighted in the menu bar
$page="Home";
//For page-specific HEAD includes
$headincludes=array("<some type of code>","<some other type of code>");
include("/assets/template/header.php");
?>
<!--START PAGE CONTENT-->
<!--END PAGE CONTENT-->
<?php
include("/assets/template/footer.php");
?>
标题模板将“headincludes”数组转储到页面的 head 部分,如下所示:
foreach ($headincludes as $toecho)
echo $toecho;
此方法适用于javascript之类的操作,但是当我尝试添加PHP语句时,它最终会在提供给浏览器的最终页面中作为未解析的PHP。是否有一些特殊的方法来用PHP回显PHP?
答案 0 :(得分:2)
是的,eval()
(阅读 evil()
)但是您最好重新考虑您的方法。也许,如果您希望包含大量的PHP代码,请传递一系列可以进一步包含的文件:
// at the beginning of the file
$includes = array('db.php', 'config.php');
// in your header, or footer (whichever is applicable)
foreach($includes as $file){
if(file_exists($file)){
include $file; // or include_once
}
}
然后,使用动态包含,您可以根据需要管理和加载其他代码。
答案 1 :(得分:0)
从字符串执行PHP的方法是使用eval()
,但是,它很少使用正确的工具。
您可以将您需要的PHP放在$headincludes
之上,然后将其输出添加到$headincludes
吗?
<?php
//Set the current page name so it can be highlighted in the menu bar
$page="Home";
include 'generators.php';
$links = generateLinks('some_arg');
//For page-specific HEAD includes
$headincludes=array("<some type of code>","<some other type of code>", $links);
include("/assets/template/header.php");
...
答案 2 :(得分:0)
你在为阵列添加什么?
如果你这样设置php:
$headincludes=array("$var1","$var2");
它不起作用。你必须这样做:
$headincludes=array($var1,$var2);
答案 3 :(得分:0)
在主文件中执行PHP代码,并将结果转储到$headincludes
。没有必要在标题中执行代码,结果不会改变。
还是会吗?如果你真的试图将任意代码注入到其他代码中,那你就错了。
答案 4 :(得分:0)
进入$headincludes
注意:使用include_once
答案 5 :(得分:0)
你尝试过字符串连接吗? 像这样
$headincludes=array("<your html code>".$variable."<more html>","<more>")
答案 6 :(得分:0)
试试这个:
echo eval('?>html or javascript<?');
echo eval('php');
答案 7 :(得分:0)
如果您尝试输出php文件,请确保轻松完成,但您的浏览器无法运行。
所以你需要:
或
include_once()或include()无论如何都是你的朋友,它(就像名字读取一样)包含文件,文件在那个地方被“执行”。如果之前已经包含过,“曾经”版本将不会包含相同的文件两次(如果您执行多个包含,则会很有用,反过来会执行其他包含)。