PHP 回显与 PHP 短回显标签

新手上路,请多包涵

它们的安全性是否相同?我被告知使用

<?=$function_here?>

安全性较低,并且会减慢页面加载时间。我严格偏向于使用回声。

有什么优点/缺点?

原文由 homework 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 394
2 个回答

首先, <?= 不是 短开标签,而是 简写 echo ,与 <?php echo 相同。而且它不能被禁用。因此,在始终启用的含义中使用它是安全的。

说到安全方面的 _安全性_,输出必须 始终根据输出介质规则进行编码

例如,当在 HTML 中回显数据时,它必须是 html 编码的:

  <?= htmlspecialchars($function_here, ENT_QUOTES) ?>

或者,当在 JavaScript 中回显数据时,它必须是 javascript 编码的:

  <script>var=<?= json_encode($function_here) ?>

或者,当它同时是 HTML 和 JS 时,则必须使用 两种 编码:

 <?php foreach($links as $label => $url): ?>
    <br>
    <form method="post">
        <button class="my" onclick="<?=htmlspecialchars("window.open(".json_encode($url).")", ENT_QUOTES) ?>">
            <?=htmlspecialchars($label, ENT_QUOTES) ?>
        </button>
    </form>
<?php endforeach ?>

说到短开放标签,只有一个 <? ,并且它并不总是启用(参见 short_open_tag 指令)。

实际上,在 PHP 5.3.0 提供的 php.ini-production 文件中,它们默认是禁用的:

 $ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off

因此,在您要分发的应用程序中使用它们可能不是一个好主意:如果未启用它们,您的应用程序将无法运行。

<?php ,另一方面,不能被禁用——所以,使用这个是最安全的,即使写的时间更长。

原文由 Pascal MARTIN 发布,翻译遵循 CC BY-SA 4.0 许可协议

只是添加另一个 PSR 来源: http ://www.php-fig.org/psr/psr-1/

PHP 代码必须使用长标签或短回声标签;它不得使用其他标签变体。

指定:

  <?php ?> and <?= ?>

原文由 leopold 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题