PHP 回声与 PHP 短回显标签

2022-08-30 08:47:57

它们在安全性上是否相等?我被告知使用

<?=$function_here?>

不太安全,并且它减慢了页面加载时间。我严格偏向于使用echo。

有哪些优点/缺点?


答案 1

首先,不是一个简短的开放标签,而是一个速记回声,这与.而且它不能被禁用。因此,使用起来很安全,因为它始终处于启用状态。<?=<?php echo

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

例如,在 HTML 中回显数据时,它必须采用 html 编码:

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

或者,当在JavasScript中回显数据时,它必须是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 生产文件中,默认情况下它们处于禁用状态:

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

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

<?php,在另一边,不能禁用 - 所以,使用这个是最安全的,即使它写得更长。


答案 2

Echo通常只是更好地使用,因为...

  1. 它支持良好的编程风格。
  2. 它不能在php中关闭.ini(短标签可以)
  3. 短标签将在 PHP 6 中删除)

但是,它们通常是相同的。另请参阅:

  1. PHP 短标签可以接受使用吗?
  2. 在 PHP 中,echo 和 print 有何不同?

推荐