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?
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.
Echo est généralement mieux à utiliser parce que...
- Il prend en charge bon style de programmation.
- Il ne peut pas être éteint en php.ini (balises courtes peut être)
-
les tags courts seront supprimés en PHP 6)
Mais, ils sont généralement les mêmes. Voir aussi:
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é.
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".
juste pour ajouter une autre source de PSR: http://www.php-fig.org/psr/psr-1 /
Le code PHPdoit utiliser les balises longues ou les balises à écho court; il ne doit pas utiliser les autres variations de balises.
précisant:
<?php ?> and <?= ?>
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.
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