Webmaster - Afficher facilement le code php/xhtml de vos pages

Décembre 2016

Si vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions.



En php


Afficher le code php


La fonction highlight_file permet d'afficher le code php d'un fichier.

Exemple pour afficher le code de index.php :
highlight_file(index.php);
On peut également utiliser la constante __FILE__ pour afficher la source du fichier en cours.

Il convient d'utiliser la fonction exit pour ne pas exécuter le reste du script.

On peut assembler ces différents bouts de code pour afficher la source dans une certaine condition, ici si la variable get "source" existe :
//Si la variable get source existe
if(isset($_GET['source']))
    {
        //on affiche le code php et arrête le script avec exit
        highlight_file(__FILE__);
        exit;
    }
Attention : Prenez garde a ne pas afficher vos mots de passe en utilisant cette astuce.

L'inconvénient de cette astuce est qu'elle ne colore que le code php, pas le html.
Pour colorer le code html avec une librairie javascript, voir :
Coloration syntaxique dans vos pages web
Ou bien avec geshi (en php) :
http://www.siteduzero.com/tuto-3-7340-1-colorer-son-code.html

Plus d'informations sur la fonction highlight_file


Cependant, le code html généré par cette fonction est invalide, car elle ne place pas de doctype, de balises body, html...

J'ai crée une fonction permettant d'afficher la source tout en gardant une page valide.
Voir

Voici cette fonction.
Elle est à utiliser au milieu de votre code html, après la balise body.
Vous pouvez l'adapter facilement si vous le désirez.
function afficher_code_php()
  {
    if (isset($_GET['source']))
      {
        echo '<p><a href="',$_SERVER['PHP_SELF'],'">Retour</a></p>';
        echo '<p>Ceci est le code php du fichier :</p>';
        $page=highlight_file($_SERVER['SCRIPT_FILENAME'], TRUE);
        $page=str_replace(
          array('<code>','/code>','&nbsp;','</font>','<font color="'),
          array('<pre style="padding:1em;border:2px solid black;overflow:scroll">','/pre>',' ','</span>','<span style="color:'),$page);
        echo $page;
        echo '<p><a href="',$_SERVER['PHP_SELF'],'">Retour</a></p>';
        echo '</body></html>';
        exit;
      }
  }

Afficher le code html


On peut utiliser view-source pour afficher la source html de la page.

Par exemple, ce lien :
<a href="view-source:http://www.commentcamarche.net/">Le code html de CCM</a>
affichera le code html de la page d'accueil de ccm.

La variable php $_SERVER['PHP_SELF'] correspond au nom du fichier et a son chemin par rapport a la racine du site.

Par exemple, si vous écrivez ce code
<?php echo $_SERVER['PHP_SELF'];?>
dans le fichier "index.php" rangé dans un répertoire nommé "repertoire/" de votre site, le rendu sera :
/repertoire/index.php
Donc, on peut combiner ces deux astuces pour afficher la source html d'un fichier en écrivant :
<a href="view-source:ladresse_de_votre_site<?php echo $_SERVER['PHP_SELF'];?>">Source html</a>

En html


Il suffit d'utiliser l'astuce précédente en marquant le nom du fichier.
Par exemple :
<a href="view-source:ladresse_de_votre_site/index.html">Source de la page d'acceuil</a>

Informations


L'astuce du view-source ne marche pas avec des chemins en relatifs.
Ce code ne fonctionnera pas :
<a href="view-source:index.html">Code de la page d'accueil.</a>

Le fait d'utiliser la variable PHP_SELF pour afficher le nom du fichier revient au même, mais elle est plus pratique je trouve, notamment si comme moi vous utilisez une seule page source.

Note de Sylvain :
view-source est censé marcher sur tous les navigateurs récents, mais chez moi ça ne fonctionne qu'avec Firefox.

Voir aussi


A voir également :

Ce document intitulé «  Webmaster - Afficher facilement le code php/xhtml de vos pages  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.