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") ?>
Официально, "короткий эхо-тег" - это нечто отличное от "короткого тега".
Эхо обычно лучше использовать, потому что...
- Он поддерживает хороший стиль программирования.
- Это не может быть отключено в php.ini (короткие теги могут быть)
Короткие теги будут удалены в PHP 6)
Но они, как правило, одинаковы. Смотрите также:
Помимо целой полурелигиозной дискуссии о том, является ли использование коротких меток хорошей идеей и следует ли считать ее устаревшей, первоначальный вопрос заключался в том, насколько безопасны или небезопасны их использование.
Проще говоря, если вы используете короткие теги на сервере, который их не поддерживает, части вашего 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