它们的安全性是否相同?我被告知使用
<?=$function_here?>
安全性较低,并且减慢了页面加载时间。 我严格偏向于使用echo。
有哪些优点/缺点?
答案 0 :(得分:96)
<?
和<?=
被称为短开放标记,并不总是使用PHP 5.3或更低版本启用(请参阅short_open_tag
指令)(但是从PHP 5.4.0开始,{{ 1}}总是可用的。)
实际上,在PHP 5.3.0提供的php.ini-production文件中,默认情况下禁用它们:
<?=
因此,在您想要分发的应用程序中使用它们可能不是一个好主意:如果未启用它们,您的应用程序将无法运行。
另一方面, $ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
不能被禁用 - 所以,使用这个是最安全的,即使它写的时间更长。
除了不一定启用短开标签这一事实外,我认为没有太大区别。
答案 1 :(得分:32)
Echo通常更好用,因为......
但是,它们通常是一样的。另见:
答案 2 :(得分:19)
除了关于使用短标签是否是一个好主意以及是否应该被视为弃用的整个半宗教辩论外,最初的问题是他们使用的安全性或不安全性。
简单地说,如果您在不支持它们的服务器上使用短标签,可能会暴露部分PHP代码,这可能被视为安全漏洞。
答案 3 :(得分:11)
http://php.net/manual/en/language.basic-syntax.phpmode.php州:
从PHP 5.4开始,无论
short_open_tag
设置如何,短回声标记始终被识别且有效。
short_open_tag
关闭或开启无关紧要。
所以现在你可以毫无顾虑地在你的模板中添加这样的标签:
<?= (($test) ? "val1" : "val2") ?>
现在是正式的,“短回声标签”与“短标签”非常不同。
答案 4 :(得分:4)
只是为了另一个PSR来源:http://www.php-fig.org/psr/psr-1/
PHP代码必须使用长标签或短回声标签;它不能使用其他标签变体。
指定:
<?php ?> and <?= ?>
答案 5 :(得分:0)
那么他们为什么不删除关闭短打开标签的选项,并默认启用它。
这是PHP的一个非常危险的举动。原因是,如果您将现有的带有短标签的代码放在PHP6服务器上并且有人查看该页面,他们就会将原始代码下载到您可以查看的浏览器中。这可能会严重扼杀PHP。
答案 6 :(得分:-5)
你应该使用&lt; \?=并要求你的系统管理员/主机打开short_open_tags,它没有任何缺点被关闭,它没有减速,解析器寻找&lt; \?它在索引,binnary搜索中寻找&lt; \?php的方式相同(也许
此外,已经在PHP 5.5&lt; \?=上将默认打开,长期&lt; \?=将优先于&lt; \?php echo half弃用。
如果还没有那么..有点谷歌搜索帮助很多= D