PHP эхо против коротких тегов PHP

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

<?=$function_here?>

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

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

7 ответов

Решение

<? а также <?= называются короткими открытыми тегами и не всегда включены (см. 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, с другой стороны, не может быть отключен - поэтому его безопаснее использовать, даже если он длиннее для записи.


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

http://php.net/manual/en/language.basic-syntax.phpmode.php гласит:

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

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

Так что теперь вы можете, не беспокоясь, добавить такие теги в свои шаблоны:

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

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

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

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

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

  1. Являются ли короткие теги PHP приемлемыми для использования?
  2. Чем эхо и печать отличаются в PHP?

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

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

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

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

с указанием:

 <?php ?> and <?= ?>

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

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

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

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

Если еще не сурте.. Немного гуглить очень помогает =D

Другие вопросы по тегам