Sont-ils égaux en sécurité? J'ai été informé que l'utilisation
<?=$function_here?>
était moins sûr et ralentissait le temps de chargement des pages. Je suis strictement partisan de l'utilisation de l'écho.
Quels sont les avantages/inconvénients?
<?
et <?=
sont appelées balises ouvertes courtes et ne sont pas toujours activées (voir short_open_tag
directive) avec PHP 5.3 ou inférieur (mais depuis PHP 5.4.0, <?=
est toujours disponible).
En fait, dans le fichier php.ini-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 souhaitez distribuer n'est peut-être pas une bonne idée: votre application ne fonctionnera pas si elle n'est pas activée.
<?php
, de l'autre côté, ne peut pas être désactivé - il est donc plus sûr d'utiliser celui-ci, même s'il est plus long à écrire.
Sauf que les balises ouvertes courtes ne sont pas nécessairement activées, je ne pense pas qu'il y ait beaucoup de différence.
Echo est généralement mieux à utiliser car ...
Mais, ils sont généralement les mêmes. Voir également:
Outre tout le débat semi-religieux sur la question de savoir si l'utilisation de balises courtes est une bonne idée et si elle doit ou non être considérée comme obsolète, la question initiale était de savoir dans quelle mesure ils étaient sûrs ou dangereux.
En termes simples, si vous utilisez des balises courtes sur un serveur qui ne les prend pas en charge, des 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 d'écho courte est toujours reconnue et valide, quel que soit le
short_open_tag
réglage.
short_open_tag
Off ou On n'a plus d'importance.
Alors maintenant, vous pouvez, sans souci, mettre des balises comme celle-ci dans vos modèles:
<?= (($test) ? "val1" : "val2") ?>
C'est officiel maintenant, le "short echo tag" est quelque chose de très différent du "short tag".
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 variantes de balises.
en précisant:
<?php ?> and <?= ?>
Alors pourquoi ne suppriment-ils pas simplement l'option de désactiver la balise ouverte courte et de la laisser activée par défaut.
C'est une décision TRÈS dangereuse de PHP. La raison en est que si vous placez votre code existant contenant des balises courtes sur un serveur PHP6 et que quelqu'un consulte cette page, il obtiendra le code brut téléchargé sur son navigateur que vous pourrez visualiser. Cela pourrait sérieusement tuer PHP.