PHP echo vs PHP short tags

sont-ils égaux en sécurité? J'ai été informé que l'utilisation de

<?=$function_here?>

était moins sûr, et qu'il ralentit les temps de chargement des pages. Je suis strictement biaisé pour utiliser echo.

Quels sont les avantages/inconvénients?

60
demandé sur Homework 2009-09-07 00:19:53

7 réponses

<? et <?= sont appelés des balises ouvertes courtes, et ne sont pas toujours activées (voir la directive "151970920 short_open_tag 151980920") avec PHP 5.3 ou inférieur (mais depuis PHP 5.4.0, <?= est toujours disponible).

en fait, dans le php.ini-fichier de production fourni avec PHP 5.3.0, ils sont désactivés par défaut:

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

donc, les utiliser dans une application que vous voulez distribuer pourrait ne pas être une bonne idée: votre l'application ne fonctionnera pas si elle n'est pas activée.

<?php , de l'autre côté, ne peut pas être désactivé -- donc, il est plus sûr d'utiliser celui-ci, même si c'est plus long à écrire.



Excepté le fait que les tags ouverts courts ne sont pas nécessairement activés, Je ne pense pas qu'il y ait beaucoup de différence.

94
répondu Pascal MARTIN 2013-04-01 01:25:36

Echo est généralement mieux à utiliser parce que...

  1. Il prend en charge bon style de programmation.
  2. Il ne peut pas être éteint en php.ini (balises courtes peut être)
  3. les tags courts seront supprimés en PHP 6)

Mais, ils sont généralement les mêmes. Voir aussi:

  1. les balises PHP courtes sont-elles acceptables?
  2. en quoi echo et print sont-ils différents en PHP?
32
répondu carl 2017-05-23 11:47:28

mis à part tout le débat semi-religieux sur la question de savoir si l'utilisation de courtes étiquettes est une bonne idée et si elle devrait ou non être considérée comme étant dévalorisée, la question initiale était de savoir dans quelle mesure elles devaient être utilisées en toute sécurité.

en termes simples, si vous utilisez des balises courtes sur un serveur qui ne les supporte pas, certaines parties de votre code PHP peuvent être exposées, ce qui peut être considéré comme une vulnérabilité de sécurité.

18
répondu Frank 2010-11-19 09:25:39

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

à partir de PHP 5.4, La balise echo courte est toujours reconnue et valide, quel que soit le paramètre short_open_tag .

short_open_tag ou Sur n'importe plus.

donc maintenant vous pouvez, sans souci, mettre des étiquettes comme ça dans vos modèles:

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

It est maintenant officiel, le "court-tag echo" est quelque chose de très différent de la "balise courte".

11
répondu Blouarf 2016-12-16 10:31:33

juste pour ajouter une autre source de PSR: http://www.php-fig.org/psr/psr-1 /

Le code PHP

doit utiliser les balises longues ou les balises à écho court; il ne doit pas utiliser les autres variations de balises.

précisant:

 <?php ?> and <?= ?>
4
répondu leopold 2016-03-23 14:24:40

alors pourquoi ne pas simplement supprimer l'option pour désactiver la balise short open et la laisser être activée par défaut.

c'est un mouvement très dangereux par PHP. La raison étant, si vous mettez votre code existant qui a des balises courtes en elle sur un serveur de PHP6 et quelqu'un regarde cette page, ils obtiendront le code brut téléchargé à leur navigateur que vous pouvez voir. Cela pourrait sérieusement tuer PHP.

0
répondu Ritey 2010-04-27 14:16:03

vous devez utiliser <\?= et demandez à votre sysadmin / host d'activer short_open_tags, il n'y a pas de contre à désactiver, il n'y a pas non plus de ralentissement, l'analyseur cherche le <\? de la même façon recherchez <\?php à l'intérieur de l'index, recherche binnaire (peut-être

aussi, déjà sur PHP 5.5 <\?= sera activé par défaut et à long terme <\?= seront préférées pendant que <\?PHP echo semi déprécié.

si ce n'est pas encore surte.. Un peu de googling aide un lot = d

-5
répondu Lucas 2012-05-03 15:58:55