它们的安全性是否相同?我被告知使用 <?=$function_here?> 安全性较低,并且会减慢页面加载时间。我严格偏向于使用回声。 有什么优点/缺点? 原文由 homework 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先, <?= 不是 短开标签,而是 简写 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 许可协议
首先,
<?=
不是 短开标签,而是 简写 echo ,与<?php echo
相同。而且它不能被禁用。因此,在始终启用的含义中使用它是安全的。说到安全方面的 _安全性_,输出必须 始终根据输出介质规则进行编码。
例如,当在 HTML 中回显数据时,它必须是 html 编码的:
或者,当在 JavaScript 中回显数据时,它必须是 javascript 编码的:
或者,当它同时是 HTML 和 JS 时,则必须使用 两种 编码:
说到短开放标签,只有一个
<?
,并且它并不总是启用(参见short_open_tag
指令)。实际上,在 PHP 5.3.0 提供的 php.ini-production 文件中,它们默认是禁用的:
因此,在您要分发的应用程序中使用它们可能不是一个好主意:如果未启用它们,您的应用程序将无法运行。
<?php
,另一方面,不能被禁用——所以,使用这个是最安全的,即使写的时间更长。