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


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

<?=$function_here?>

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

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

7 60

7 ответов:

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

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

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

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

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


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

Эхо, как правило, просто лучше использовать, потому что...

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

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

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

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

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

http://php.net/manual/en/language.basic-syntax.phpmode.php состояния:

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

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

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

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

Теперь это официально, "короткий Эхо-тег" - это что-то совсем другое, чем "короткая бирка".

просто для объявления другого источника PSR:http://www.php-fig.org/psr/psr-1/

PHP код должен использовать длинные теги или короткие теги Эха; он не должен использовать другие варианты тегов.

задание:

 <?php ?> and <?= ?>

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

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

вы должны использовать

кроме того, уже на PHP 5.5

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