PHP echo vs PHP короткие теги

Являются ли они равными по безопасности? Мне сообщили, что используя

<?=$function_here?>

менее безопасен и замедляет загрузку страниц. Я просто склонен использовать эхо.

Каковы преимущества/недостатки?

Ответ 1

<? и <?= называются короткими открытыми тегами и не всегда включены (см. директиву short_open_tag) с помощью PHP 5.3 или ниже (но поскольку PHP 5.4.0, <?= всегда доступен).

Собственно, в файле php.ini-production, поставляемом с PHP 5.3.0, они по умолчанию отключены:

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

Таким образом, использование их в приложении, которое вы хотите распространять, может не быть хорошей идеей: ваше приложение не будет работать, если оно не включено.

<?php, с другой стороны, не может быть отключен - так что безопаснее использовать этот, даже если он длиннее для записи.


Кроме того, что короткие открытые теги не обязательно включены, я не думаю, что есть большая разница.

Ответ 2

Эхо обычно лучше использовать, потому что...

  • Он поддерживает хороший стиль программирования.
  • Он не может быть отключен в php.ini(короткие теги могут быть)
  • Короткие теги будут удалены в PHP 6)

Но они, как правило, одинаковы. См. Также:

Ответ 3

Помимо всей полурелигиозной дискуссии о том, являются ли короткие теги или нет, хорошая идея и следует ли считать ее устаревшей, первоначальный вопрос касался того, насколько безопасными или небезопасными они будут использоваться.

Проще говоря, если вы используете короткие теги на сервере, который их не поддерживает, могут быть обнаружены части вашего кода PHP, которые можно считать уязвимостью безопасности.

Ответ 4

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

Начиная с PHP 5.4, короткий тег echo всегда распознается и действителен независимо от параметра short_open_tag.

short_open_tag Выкл. или Вкл. больше не имеет значения.

Итак, теперь вы можете без проблем разместить такие теги в своих шаблонах:

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

Официально, "короткий тег эха" - это нечто совсем иное, чем "короткий тег".

Ответ 5

Только для другого источника PSR: http://www.php-fig.org/psr/psr-1/

PHP-код ДОЛЖЕН использовать длинные теги или теги короткого эха; он НЕ ДОЛЖЕН использовать другие варианты тегов.

задающий:

 <?php ?> and <?= ?>

Ответ 6

Итак, почему бы не просто удалить параметр, чтобы отключить короткий открытый тег и позволить ему быть включен по умолчанию.

Это ОЧЕНЬ опасный шаг PHP. Причина в том, что если вы наделите существующий код короткими тегами на нем на сервере PHP6, и кто-то просмотрит эту страницу, они получат исходный код, загруженный в свой браузер, который вы можете просмотреть. Это может серьезно убить PHP.

Ответ 7

Вы должны использовать < \? = и попросить свой sysadmin/host включить short_open_tags, у него нет каких-либо минусов, которые нужно отключить, также нет замедления, синтаксический анализатор ищет < \? так же, как он ищет < \? php внутри индекса, бинарный поиск (возможно

Кроме того, уже на PHP 5.5 < \? = будет включен по умолчанию и в долгосрочной перспективе < \? = будет предпочтительнее, если < \? php echo semi устарело.

Если еще не до конца... Немного поисковой системы помогает много = D