Du PHP dans une page html
Lors d’une présentation d’un compteur de visite en
PHP à insérer dans une page
HTML, j’ai
constaté que le code n’était pas interprèté !
Le serveur web renvoi le contenu du fichier au lieu du résultat, alors
que le même script avec l’extension php fonctionne.
Pour que le serveur web renvoi le résultat du script, il faut modifier la configuration du serveur.
Le compteur
C’est un compteur basique, il se contente d’incrémenter une valeur dans
un fichier pour mémoriser le nombre de passages sur la page et
d’afficher cette valeur. Il n’essaie pas de déterminer le nombre de
visiteurs uniques ni d’identifier l’origine des visiteurs, pour cela il
existe des outils ou des sevices adaptés à cet usage.
Il permet aussi de faire un peu de révision sur le langage PHP !
Contenu de la page html contenant le script :
<html>
<head>
</head>
<body>
<center><h1>Compteur de visite</h1></center>
<p>Appel du script de comptage</p>
<?php
$fichier="compteur.txt";
print "<p>Nom du fichier de compteur : $fichier </p>";
if( !file_exists($fichier) ) {
print "<p>Creation d'un fichier vide.</p>";
$fp = fopen($fichier, "w");
fwrite($fp, "0");
fclose($fp);
}
if (!$fp = fopen("$fichier","r+"))
{ echo "<p>-E-> Echec de l'ouverture du fichier $fichier</p>";
}
else
{ $nbvisites = fgets($fp,10);
if ($nbvisites=="") $nbvisites = 0;
$nbvisites++;
fseek($fp,0);
fputs($fp,$nbvisites);
fclose($fp);
print "<p>Nombre de visite : $nbvisites</p>";
}
?>
<p>Fin de l'affichage du compteur.</p>
</body>
</html>
La page affichée dans le navigateur ne renvoie pas le nombre de visites :
Appel du script de comptage
Nom du fichier de compteur : $fichier "; if( !file_exists($fichier) ) { print "
Creation d'un fichier vide.
"; $fp = fopen($fichier, "w"); fwrite($fp, "0"); fclose($fp); } if (!$fp = fopen("$fichier","r+")) { echo "
-E-> Echec de l'ouverture du fichier $fichier
"; } else { $nbvisites = fgets($fp,10); if ($nbvisites=="") $nbvisites = 0; $nbvisites++; fseek($fp,0); fputs($fp,$nbvisites); fclose($fp); print "
Nombre de visite : $nbvisites
"; } ?>
Fin de l'affichage du compteur.
Configurer le serveur Web
Explications
Avec quelques recherches, l’informations est facile à trouver :
- si la page a l’extension html, alors elle est renvoyée vers le navigateur de l’utilisateur. Le navigateur ne sait pas interprèter le php, uniquement le JavaScript.
- si la page a l’extension php, alors le code contenu dans le fichier est interprèté et le résultat est envoyé vers le navigateur
Paliatif
Pour que la page compteur.html s’affiche correctement, il faut donc
la renommer en compteur.php.
Dans ce cas, la page s’affiche correctement :
Appel du script de comptage
Nom du fichier de compteur : compteur.txt
Nombre de visite : 6
Fin de l'affichage du compteur.
Un fichier php peut contenir du code html, seules les parties spécifiques doivent être encadrées par les balises de code.
Correction
Pour que les fichiers *.html
contenant du code php, il faut
rajouter un fichier .htaccess
à la racine du site Web. Ce fichier
viendra complèter le contenu du fichier httpd.conf qui définit la
configuration du serveur Apache.
Ce fichier doit contenir :
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
Quand ce fichier est présent, le contenu des fichiers html est analysé comme celui des fichiers ayant l’extension php et le code est donc interprèté.