70

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

<?=$function_here?>

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

有什么优点/缺点?

4

6 回答 6

102

<?并且<?=被称为短开放标签,并且在 PHP 5.3 或更低版本中并不总是启用(参见short_open_tag指令)(但自 PHP 5.4.0 起,<?=始终可用)。

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

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

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

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


除了不一定启用短打开标签这一事实外,我认为没有太大区别。

于 2009-09-06T20:22:46.397 回答
31

Echo 通常更好用,因为...

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

但是,它们通常是相同的。也可以看看:

  1. 可以使用 PHP 短标签吗?
  2. PHP 中的 echo 和 print 有何不同?
于 2009-09-06T20:23:41.933 回答
21

http://php.net/manual/en/language.basic-syntax.phpmode.php状态:

从 PHP 5.4 开始,无论设置如何,短回显标签始终被识别并有效short_open_tag

short_open_tag关闭或开启不再重要。

所以现在你可以毫无顾虑地在你的模板中添加这样的标签:

    <?= (($test) ? "val1" : "val2") ?>

现在正式了,“短回声标签”与“短标签”有很大不同。

于 2014-07-19T07:21:08.790 回答
20

除了关于使用短标签是否是一个好主意以及是否应该被弃用的整个半宗教辩论之外,最初的问题是使用它们的安全性或不安全性。

简而言之,如果您在不支持短标签的服务器上使用短标签,您的部分 PHP 代码可能会暴露出来,这可能会被视为安全漏洞。

于 2010-11-19T09:25:39.547 回答
5

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

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

指定:

 <?php ?> and <?= ?>
于 2016-03-23T14:24:40.700 回答
-5

您应该使用 <?= 并要求您的系统管理员/主机打开 short_open_tags,关闭它没有任何缺点,也没有减速,解析器寻找 <? 与在索引中查找 <?php 的方式相同,二进制搜索(也许 <?PHP 由于解析速度降低而变慢)。

此外,已经在 PHP 5.5 <?= 将默认打开,长期 <?= 将是首选,而 <?php echo semi 已弃用。

如果还不确定.. 谷歌搜索一下会有很大帮助 =D

于 2012-05-03T15:58:55.997 回答