我正在尝试将一个验证码字段添加到XSL文件中的表单中,但PHP似乎没有在页面上呈现: -
我目前有: -
<xsl:call-template name="signature">
<xsl:with-param name="text" select="signature" />
</xsl:call-template>
<?php
require_once('/recaptchalib.php');
$publickey = "public_key";
echo recaptcha_get_html($publickey);
?>
<div class="forum_default_margin_top">
<input type="submit" name="post_submit" value="Submit" onclick="tinyMCE.triggerSave(); if (!f.checkPostTopicValues(document.forms['new_topic'].topic_subject, document.forms['new_topic'].topic_text, document.forms['new_topic'].signature, true)) return false;" class="forum_default_margin_right" />
<input type="reset" name="cancel" value="Cancel" onclick="return f.cancelNewTopic('{forum/uri}', 0)" />
</div>
上面和下面有更多代码,但上面显示了我如何尝试在文件中包含php但在前端没有任何渲染 - 即使我包含一个echo语句
echo "Hello World";
这仍然不会显示在前端。
非常感谢任何帮助,非常感谢。
答案 0 :(得分:2)
您的文件扩展名可能未被PHP解释器解析。
有一些方法可以更改它,并让PHP在离开服务器之前解析每个XSL文件。但是,这对于reasources并不是很好,因为它适用于所有XSL文件。
最简单,最节省资源的方法是为XSL文件提供.php
扩展名,并发送正确的MIME类型(是this one吗?我不知道)确保它在客户端得到正确处理:
header("Content-type: {insert type here}");
将.php
扩展名放在那里并不是很好,但也许你不关心虚荣心。
答案 1 :(得分:2)
我怀疑:
*.xsl
,您的Web服务器未配置为将*.xsl
文件作为PHP代码处理。有几种可能的解决方案,但最简单的解决方案是:
*.php
。在文件顶部添加:
<?php header('Content-Type: application/xslt+xml'); ?>
P.S。您可以将XSL包含在PHP文件中,而不是将PHP包含在XSL文件中; - )
答案 2 :(得分:1)
从来没有真正得到正确答案,所以4年后......
将include或require放在xsl:text块中,禁用输出转义并使用CDATA部分。
EG:
<xsl:text disable-output-escaping="yes">
<![CDATA[<?php require_once 'path/to/file.php']]>
</xsl:text>
您也可以在CDATA部分内安装php。显然xsl的输出需要是一个php文件,并在浏览器或其他任何地方调用。
或者你也可以在XSL中调用php函数。查看文档:{{3}}
答案 3 :(得分:0)
您确实在文件系统的根目录中有名为recaptchalib.php
的文件吗?我怀疑不是......
我认为这一行:
require_once('/recaptchalib.php');
......应该......
require_once('recaptchalib.php');
如果require()
文件不存在,则会导致致命错误。请记住require()
采用本地路径,因此前导斜杠指的是本地文件系统的根,而不是Web服务器的文档根目录。