0

可能重复:
参考 - 这个符号在 PHP 中是什么意思?

我尝试为PHP-Nemid运行测试脚本有些不成功。我正在尝试编写代码,但是当它到达使用文件“nemid.tpl.php”的渲染函数时,我有点迷失了。当我运行脚本时,模板文件实际上是写到屏幕上的,从某种意义上说,不是 PHP 填充相关的模板变量,而是只编写文字 PHP 代码。换句话说<?= $some_var_value,就像在渲染页面的源代码中一样。

我不明白的另一件事是<?=模板文件中的含义是什么。这不是我熟悉的 PHP 结构。起初我认为我应该更改<?= $some_var<? print $some_var,但在这种情况下,它仍然会将文字 PHP 代码打印到页面上。

如果有人能给我一些关于这里发生的事情的见解,我将不胜感激。

模板文件(nemid.tpl.php)

<html>
<body>
        <form id="signedForm" name="signedForm" method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
                <div id="applet">
<!-- div ID used for overlay / modal-box -->
                    <applet name="DANID_DIGITAL_SIGNATUR" tabindex="1" archive="<?= $ServerUrlPrefix ?>/bootapplet/1234567" code="dk.pbs.applet.bootstrap.BootApplet" width="200" height="250" mayscript="mayscript" style="visibility: visible; ">
                        <param name="ServerUrlPrefix" value="<?= $ServerUrlPrefix ?>"> 
                        <param name="ZIP_BASE_URL" value="<?= $ZIP_BASE_URL ?>">
                        <param name="ZIP_FILE_ALIAS" value="<?= $ZIP_FILE_ALIAS ?>">
                        <param name="log_level" value="<?= $log_level ?>"> 
                        <param name="paramcert" value="<?= $paramcert ?>">
                        <param name="signproperties" value="<?= $signproperties ?>"> 
                        <param name="paramsdigest" value="<?= $paramsdigest ?>"> 
                        <param name="signeddigest" value="<?= $signeddigest ?>"> 
                        <param name="MAYSCRIPT" value="<?= $MAYSCRIPT ?>"> 
                    </applet>
                </div>
            <input type="hidden" name="signature">
            <input type="hidden" name="result"> 
        </form>
<script type="text/javascript">
    function onLogonOk(signature) {
        document.signedForm.signature.value=signature;
        document.signedForm.result.value='ok';
        document.signedForm.submit();
    }
    function onLogonCancel() {
        document.signedForm.result.value='cancel';
        document.signedForm.submit();
    }
    function onLogonError(emsg) {
        document.signedForm.result.value=emsg;
        document.signedForm.submit();
    }
</script> 
</body>
</html>

渲染功能

我已经在下面的函数中测试了 $vars 的内容,并且可以确认模板所需的提取变量存在。

function render($template, $vars = array())
{
    extract($vars);
    ob_start();
    include('../templates/' . $template . '.tpl.php');
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}

<?=是 echo 的一个简短的开放标签。

<?='Hello world'?>

会输出Hello world

并回答为什么它不解析,文件名是什么?您是否安装并配置了 PHP 以与您的 Apache/Nginx/其他服务器一起使用?

要注意的另一件事是您使用的模板PHP_SELF

PHP_SELF实际上打开了很多漏洞,不建议使用。您可以使用替代方案:

basename(__FILE__);
4

3 回答 3

4

<?=是 echo 的一个简短的开放标签。

<?='Hello world'?>

会输出Hello world

并回答为什么它不解析,文件名是什么?您是否安装并配置了 PHP 以与您的 Apache/Nginx/其他服务器一起使用?

要注意的另一件事是您使用的模板PHP_SELF

PHP_SELF实际上打开了很多漏洞,不建议使用。您可以使用替代方案:

basename(__FILE__);
于 2012-12-31T08:00:42.443 回答
1
  <?=

是 php 的简写

  <?php echo 
于 2012-12-31T08:01:48.453 回答
0
<?=

被模板制作者用作速记,因为他们对大部分文件使用 HTML 并根据需要在 PHP 中打印出变量。

我的服务器已打开,但可以关闭或在旧版本中不使用。

于 2012-12-31T08:05:56.357 回答