Vous allez vite vous rendre compte qu'on ne peut pas tout faire avec HTML car ce n'est pas un langage de programmation.
Dans cette page je vais tenter de vous montrer par cinq exemples l'intérêt d'intégrer un peu de PHP dans les pages d'un site.
Rajouter un peu de code PHP dans vos pages web peut être très pratique.
En particulier la maintenance du site peut être grandement facilitée grâce à ce langage.
Imaginons un site comprenant une vingtaine de pages. Chaque page comprend quatre grandes divisions (parties) : en-tête de page, navigation, corps de page et pied de page.
Pour toutes les pages les contenus des parties en-tête, navigation et pied sont strictement identiques ; seul le contenu de la partie "corps de page" est propre à chaque page.
Les parties en-tête, navigation et pied sont certes identiques dans toutes les pages mais elles doivent être modifiées régulièrement en fonction de l'actualité : chaque semaine !
Vous comprenez qu'il serait fastidieux de changer le code HTML des parties en-tête, navigation et pied dans chacune des vingt pages et cela chaque semaine !
Il faut donc externaliser le code HTML commun aux différentes pages.
Il correspond au code HTML de la partie head de chaque page et à la division "en-tête de page"
Il correspond au code HTML de la division "navigation".
Ici j'ai repris des liens vers trois pages seulement mais il y en a en réalité une vingtaine !
Il correspond au code HTML de la division "pied de page".
Donc chaque semaine pour actualiser le site il suffira de modifier ces trois fichiers. Les modifications seront automatiquement répercutées dans les pages web du site grâce au PHP.
PHP, vous avez dit PHP ... Mais c'est l'Arlésienne !
C'est dans les pages web du site que l'on va trouver du code PHP.
Attention dès qu'une page web contient du PHP son extension doit être .php !
Texte de la page d'accueil.
Blablabla ...
Blablabla ...
Vous savez qu'à l'intérieur d'un page web il n'y a pas forcément que du code HTML. Il peut y avoir du code CSS, du code Javascript, du code SVG, etc.
Sachez désormais que dans une page il peut y avoir aussi du code PHP !
Ce code PHP doit être entre la balise <?php (balise début PHP) et ?> (balise fin PHP).
Dans la page index.php il y a deux blocs de code PHP.
Dans le premier bloc il y a deux instructions PHP et un commentaire multilignes.
Chaque instruction est basée sur la fonction include.
Donc j'inclus dans la page le code HTML correspondant à la partie head (avec les balises title, les méta balises, lien vers la feuille de style, etc.).
J'inclus aussi le code correspondant à deux boîtes de la partie BODY : le code des divisions HEADER et NAV.
Dans le deuxième bloc il y a une instruction PHP et un commentaire monoligne.
J'inclus donc le code correspondant à la division "pied de page".
Elles auront toutes la même structure. Seul le code HTML à l'intérieur du conteneur section sera différent.
Un navigateur est incapable d'interpréter le code PHP. Il ne comprend que le HTML, CSS, Javascript, etc.
Seul un serveur est capable d'interpréter le PHP. C'est pour cette raison que l'on dit que PHP est un langage côté serveur.
Naturellement tout hébergeur d'un serveur capable d'interpréter du PHP.
Lorsqu'un internaute demande à charger la page index.php (ou une autre page) de votre site le serveur de l'hébergeur ne va pas se contenter de lui envoyer le code de la page mais il va générer le code HTML à partir du code PHP de la page et adresser au visiteur ce code HTML.
Texte de la page.
Blablabla ...
Blablabla ...
Le code PHP a été remplacé par le code HTML des différents fichiers externes.
Avant d'envoyer une page chez votre hébergeur vous voulez la tester, c'est normal !
Donc vous ouvrez la page index.php avec un éditeur tel notepad puis vous produisez la commande
Exécuter/ Launch in Chrome.
Et voilà ce que le navigateur affiche :
Le navigateur n'a pas pu interpréter le code de la page il se contente de l'afficher.
Et c'est logique car je le répète, un navigateur ne sait pas interpréter du PHP !
Donc pour tester en local il faut traiter la page PHP avec un serveur web que vous avez installé sur votre machine.
Je vous conseille d'installer le pack wampserver (W pour windows).
Pour installer sous environnement windows10 le pack wampser64 (64 bits)il faut impérativement que le logiciel visual studio soit préalablement installé !
Par ailleurs les pages PHP que vous voulez tester doivent impérativement être stockées dans le sous dossier www du dossier c:\wamp ; dossier créé lors de l'installation du pack.
La page d'accueil de WAMP doit s'afficher alors à l'écran.
Grâce à la feuille de style externe (voir ci-dessous) et le serveur qui adresse au client du HTML les pages du site (ici limitées à 4) s'affichent proprement.
"Surfez" dans les différentes pages !
Bonne visite !
En cliquant sur n'importe quel des quatre liens vous pouvez observez que chaque page affiche entre autres :
Donc le code du fichier navigation.htm que je vous ai indiqué n'est pas tout à fait le code réel ...
En effet je profite des liens pour passer des paramètres à chaque page cible. Mais je n'en dis pas plus pour le moment.
Pour inclure un fichier externe dans une page web vous pouvez utiliser soit la fonction include() soit la fonction require()
Si le fichier externe n'est pas trouvé la fonction include() génère une alerte mais continue d'exécuter le script alors que la fonction require() met fin au script.
Afficher l'instant présent (date et heure courantes) ? impossible avec HTML !
Par contre aucun problème pour PHP (et JavaScript). Ces deux langages disposent des outils ad hoc.
La fonction date() de PHP retourne l'instant présent.
Pour récupérer la date courante il faut argumenter cette fonction avec la chaîne "d/m/y" (day/month/year);
Pour obtenir l'heure courante il faut argmenter cette fonction avec la chaîne "H:i" (heures : minutes) voire
"h:i:s" (heures, minutes, secondes).
Si vous voulez affichez seulement le mois courant il suffit d'écrire date('m').
Dans ce code on voit comment on initialise une variable PHP. Une variable PHP doit impérativement commencer par le caractère $.
Dans l'exemple je crée et initialise deux variables grâce à la fonction date() argumentée. Pratique !
Pour afficher des valeurs il faut utiliser l'instruction echo.
On peut afficher plusieurs valeurs dans la même instruction echo ; il suffit de concaténer ces différentes valeurs . L'opérateur de concaténation en PHP est . (le point).
Avec echo vous pouvez donc afficher des chaînes (entre guillemets simples ou doubles) et des variables (faciles à identifier grâce au caractère $).
Pour pouvez remarquer que le code PHP est à l'intérieur du conteneur H2. Donc la date courante et l'heure courante vont être affichées avec le formatage prévu pour la balise H2 par la feuille de style.
L'instruction echo a un autre rôle : elle permet d'insérer du balisage HTML dans le code PHP.
Dans l'exemple j'insère un saut de ligne (instruction : echo "
;) entre l'affichage de la date courante et de l'heure courante.
Supposons que vous demandiez le chargement de la page à 16 h 36 le 3 décembre 2016 ; le serveur va interpréter le code PHP de la page, générer du code HTML qu'il va vous adresser.
Le code HTML généré :
Mais il y a un problème !
Si la page reste affichée durant plusieurs heures elle va toujours afficher "il est exactement 16:36" ...
Il faudrait donc que la page soit rechargée régulièrement ; toutes les 60 secondes afin que l'heure courante soit actualisée.
Pour que la page soit rechargée toutes les minutes il suffit d'ajouter le code HTML suivant (dans la partie head de la page) :
La valeur de l'attribut content doit être un nombre de secondes. Testez le code ; patientez une minute pour voir l'heure courante s'actualiser automatiquement
Attention la fonction date() de PHP affiche l'heure pour le serveur et non pas l'heure pour l'ordinateur du "client".
Il y a bien sûr une solution mais elle est un peu compliquée et dépasse donc la simple initiation au PHP ...
Code identique à la version précédente sauf une ligne !
Ici j'ai utilisé de nouveaux caractères : D, M, Y (en majuscules).
Pour afficher la date avec le nom dujour et le nom du mois en Français il faut créer une fonction personnelle qui manipule des tableaux.
Comme vous savez maintenant le serveur PHP transforme le PHP en HTML.
Faut-il rappeler que HTML ignore les structures de contrôles (tests et boucles).
Donc PHP (ou JavaScript) peut être utilisé pour générer avec quelques lignes de code une quantité énorme de code HTML.
Imaginons que nous voulions afficher dans une page web la table de multiplication par 8 :
Donc il faut afficher un tableau HTML comprenant 3 colonnes mais 50 lignes de contenu.
Si vous tapez directement le code HTML correspondant la saisie serait très très fastidieuse (conteneur TABLE contenant 50 fois le conteneur TR contenant à chaque fois trois fois la balise TD) alors qu'avec le PHP ça sera très court.
8 | fois | donne | 8 | "; echo "". $i ." | "; echo "" . $produit ." | "; echo "" ; } ?>
---|
Le code PHP comprend une boucle qui est exécutée 50 fois.
Pour produire un tableau de 5000 lignes le code PHP ne serait pas plus compliqué.
A chaque passage dans la boucle : génération d'une ligne de la table par 8.
A chaque passage dans la boucle la variable $i est incrémentée de 1.
Testez ce code !
Le visiteur ne peut jamais lire le code PHP de la page. En effet s'il demande d'afficher le "code source" de la page qu'il a chargé il ne voit que le HTML généré et envoyé par le serveur.
Le visiteur ne souhaite pas forcément afficher la table par 8 et il ne veut pas forcémenent afficher les 50 premières lignes ...
Il faut donc une solution plus réaliste !
Le code devient un peu plus compliqué.
PHP ne dispose pas d'instructions de saisie (à la différence de Javascript). Il faut donc utiliser un formulaire HTML.
Notez l'emploi dans le formulaire des attributs pattern, required (introduits par HTML5) et maxlength pour avoir un contrôle de saisie via HTML.
Notez l'emploi d'une fonction : isset() qui retourne une valeur logique ainsi que l'emploi d'un tableau de données :$_GET.
Je n'en dirai pas davantage pour le moment car un dans le tuto PHP un chapitre est consacré aux tableaux PHP et un autre aux fonctions PHP et un troisième sur le traitement en PHP des données de formulaire.
Testez ce code
Vous êtes chargé de réaliser le site d'une petite entreprise. L'entrepreneur souhaite que le contenu de certaines pages soient réservées au personnel (intranet).
La gestion de mots de passe ne doit jamais être programmé en JavaScript car le code JS est visible !
Le formulaire comprend un champ de type password pour saisir un mot de passe.
Notez bien que ce champ se nomme motpasse.
Ce formulaire ne comprend pas de bouton de soumission des données puisque celle-ci s'effectue avec la méthode submit() de Javascript.
Il suffit donc de saisir le mot de passe puis de cliquer sur ENTER.
Suite à de nombreux vols commis par certains membres du personnel ...
Blabla ...
La méthode d'envoi des données est get (valeur de l'attribut method de la balise FORM).
Donc en cas de soumission le tableau associatif $_GET est créé dans la page cible (ici "intranet.php" puisque la valeur de l'attribut action de la balise FORM est intranet.php).
Notez que le mot de passe est sesame !
Je n'en dis pas plus sur le code car il y a un chapitre sur les tableaux PHP et un autre sur les formulaires et PHP. Testez !
Faites un premier essai avec un mot de passe erroné !
Avez vous observé la barre d'adresse de la page "intranet.php" après avoir saisi "sesame" et cliqué sur "intranet.php" ?
Non. Donc je vous montre une capture d'écran ci-dessous.
Contenu de la barre d'adresse (dans le cas d'un test en local) :
http://localhost/essai_php/intranet.php?motpasse=sesame
Donc le mot de passe "sesame" apparaît ! C'est très génant ...
Mais c'est logique car avec la méthode d'envoi get les données saisies dans le formulaire deviennent des paramètres de l'URL.
Rassurez vous, nous n'aurions pas eu ce problème si nous avions utilisé la méthode d'envoi post.Le mot de passe est certes contenu dans le code PHP mais comme l'utilisateur n'a pas accès à ce code (à la différence du code Javascript)...
Le code des deux pages est modifié comme suit :