8721 sujets

Développement web côté serveur, CMS

Bonjour à tous

Je viens de changer de version de PHP (.2.9 à 5.5), et je découvre que la nouvelle version ne reconnait pas <? comme début d'une partie PHP dans un fichier.
Par contre il semble que si on a
<?php
     /* du code php */
?>
    //du code html
<?
    /* une deuxième section de code php */
?>
    ...

ça a l'air de fonctionner, c'est à dire qu'il faut impérativement que la première section ait une marque <?php mais que cela suffit au programme pour comprendre qu'il s'agit bien d'un fichier contenant du php.

Y a-t-il à votre connaissance une règle claire sur ce point?
Modifié par PapyJP (05 May 2016 - 09:49)
Modérateur
Bonjour,

L'écriture <? ?> est une spécificité paramétrable au sein de la configuration interne de php.
A partir de la version 5.? (je ne sais plus combien) l'acceptation de cette écriture a été placée sur désactivée par défaut.
La raison invoquée est d'ordre sécuritaire. Semblerait-il qu'elle puisse ouvrir une brèche.

L'écriture <?php ?> assure la compatibilité sur toutes les plates-formes.

Je ne suis pas certain qu'il soit encore possible d'activer cette option depuis la version 7.
Modifié par Greg_Lumiere (05 May 2016 - 13:23)
ON peut encore ajouter que l'option s'appelle short_tags, et qu'elle contrôle aussi sauf erreur la forme <?=$variable?>.




Le problème de <? n'est pas forcément que sécuritaire. Tout bêtement, ça rentre en conflit avec un proloque XML et plus généralement avec les noeuds processing instructions de XML (que personne n'utilise, mais bon, on ne sait jamais, mieux vaut prévenir que guérir).
Après vérification, il faut que TOUTES les séquences PHP soient indiquées par
<?php
.....
?>
et pas seulement la première, comme je croyais avoir compris.
Modifié par PapyJP (06 May 2016 - 09:04)
QuentinC a écrit :
Le problème de &lt;? n'est pas forcément que sécuritaire. Tout bêtement, ça rentre en conflit avec un proloque XML et plus généralement avec les noeuds processing instructions de XML (que personne n'utilise, mais bon, on ne sait jamais, mieux vaut prévenir que guérir).

Si, si, les "processing instructions" sont utiles et utilisées.
Ceci dit, c'est la plupart du temps sur des flux XML plutôt spécialisés (ex. Objets métier).
a écrit :
Si, si, les "processing instructions" sont utiles et utilisées.
Ceci dit, c'est la plupart du temps sur des flux XML plutôt spécialisés (ex. Objets métier).


Est-ce qu'il existe des exemples ? Parce que concrètement j'en ai jamais vu qui étaient clairs sur le sujet.
QuentinC a écrit :
Est-ce qu'il existe des exemples ? Parce que concrètement j'en ai jamais vu qui étaient clairs sur le sujet.

Ceux que j'ai rencontrés étaient des objets métier WBI, stockés sous forme de schémas XSD.
Les annotations XML et instructions de traitement permettaient d'ajouter des informations structurées pour être comprises par l'EAI.
Ça fonctionnait bien et j'ai pu les réutiliser pour générer une rétro-documentation automatique.