PHP hypertext preprocessor

Image manquante
Langage_progr.png
image:Langage_progr.png

Cet article fait partie de la série
Langages de programmation
Langages à objets
Ada 95 - C++ - C#
Common Lisp
Delphi - Eiffel - Java
Nice - Oz - Python
Simula - Smalltalk
Visual Basic
Langages impératifs
APL - ASP - Assembleur
BASIC - C - COBOL
Forth - FORTRAN - Logo
Pascal - Perl - PHP
Langages fonctionnels
Erlang - Haskell
ML/OCaml - Oz
Lisp/Common Lisp
Scheme
Langages déclaratifs
Clips - Oz - Prolog
Langages concurrents
Ada 95 - Erlang
Java - Oz
Langages balisés
HTML - SGML - XML
Dialectes XML
S-expressions
Voir aussi
Conception - Codage
Tests - Optimisations
Image manquante
PHP.png


PHP est l'acronyme récursif de PHP: Hypertext Preprocessor.

PHP est un langage de script qui est principalement utilisé pour être exécuté par un serveur HTTP, mais il peut fonctionner comme n'importe quel langage interprété en utilisant les scripts et son interpréteur sur un ordinateur. PHP permet de développer suivant le modèle procédural ou/et un modèle objet. On désigne parfois PHP comme une plate-forme plus qu'un simple langage.

Sommaire

Historique

Ce langage a été créé en 1994 par Rasmus Lerdorf pour son site Web. C'était à l'origine une bibliothèque logicielle en Perl dont il se servait pour conserver une trace des visiteurs qui venaient consulter son CV. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation en langage C, capable de communiquer avec les bases de données et de créer des applications dynamiques et simples pour le World Wide Web. Rasmus décida alors en 1995 de publier son code, pour que tout le monde puisse l'utiliser et en profiter. PHP s'appelait alors PHP/FI (pour Personal Home Page Tools/Form Interpreter). En 1997, deux étudiants, Andi Gutmans et Zeev Suraski, redéveloppèrent le cœur de PHP/FI. Un an plus tard, le résultat donna le Zend Engine, nouveau cœur de PHP/FI, devenu alors PHP: Hypertext Preprocessor en version 3.

En 2002, il était utilisé par plus de 8 000 000 de sites Web à travers le monde, en 2004 par plus de 15 000 000. La version actuelle est la version 5, elle corrige certaines failles et rajoute des nouvelles fonctions et bibliothèques.

La version 5.0.0 de PHP est sortie le 13 juillet 2004 : elle utilise Zend Engine 2 et introduit une programmation orientée objet plus efficace et plus complète et des fonctionnalités de gestion pour les entreprises. PHP 5 apporte beaucoup de nouveautés tel que le support de SQLite qui est un système léger de bases de données embarqué, au détriment de la bibliothèque cliente de MySQL, plus puissant mais qui n'est désormais plus fournie par défaut, ainsi que des moyens de manipuler des fichiers et des structures XML basés sur libxml2 :

Comment ça marche ?

Sa syntaxe et sa construction ressemblent à celles des langages C++ et Perl, à la différence que le PHP peut être intégré dans du code HTML.

Image manquante
Php.gif
Schéma du fonctionnement de PHP
Fonctionnement : lorsqu'un visiteur demande à consulter une page Web, son navigateur envoie une requête à un serveur HTTP. Si la page contient du code PHP, l'interpréteur PHP du serveur le traite et renvoie du code généré (HTML).
Image manquante
Php_ligne_de_commandes_script_exemple_hdparm.png
Capture d'écran de vi en fond, affichant un script PHP, et à droite le résultat du script interprété par PHP
L'utilisation la plus répandue est celle qui fait de PHP un générateur de page Web (contenant du code HTML, CSS, JavaScript, etc.)

Ce langage permet donc de générer des pages au contenu dynamique (différent en fonction des données passées en paramètres, souvent par le biais de formulaires), mais peut aussi être utilisé comme langage de programmation en ligne de commande sans utiliser de serveur HTTP ni de navigateur. Cette fonctionnalité prend tout son sens dans un environnement de serveur Linux. Pour réaliser un script PHP exécutable, il suffit comme en Perl ou en Bash d'insérer dans le code en première ligne : #!/usr/bin/php (à vérifier en fonction des distributions).

Il existe aussi une extension appelée PHP-GTK permettant de créer des applications clientes graphiques sur un ordinateur disposant de la bibliothèque graphique GTK.

PHP possède un grand nombre de fonctions permettant des opérations sur le système de fichiers, la gestion des bases de données, des fonctions de tri et hachage, le traitement de chaînes de caractères, la génération d'images, des algorithmes de compression...

Le moteur de Wikipédia est écrit en PHP avec une base MySQL. Il s'intègre donc dans une plateforme LAMP.

Logiciels utilisant PHP

Forums de discussion

Portails (CMS)

Certains portails reposent aussi sur un système de fichiers texte (sans SGBD)

Administration base de données

Wiki

Autres

Plate-forme LAMP

LAMP est un nom usuel pour désigner les plates-formes combinant :

Par extension, sous environnement Windows, on parlera de plateforme WAMP. Trois WAMP « intégrés » particulièrement connus sont easyphp, xampp et wamp5.

Petit cours pour les débutants

ATTENTION ! Vous devez disposer d'un serveur apache et de php qui interpreteront vos pages PHP ! Si vous êtes un débutant, commencez avec http://www.easyphp.org ou http://www.wampserver.com, qui sont des logiciels contenant un pack de Apache, PHP et Mysql et qui les installeront pour vous. Sinon, installez apache, php et mysql (ou un autre systeme de base de donnée) séparement. Avec certaines distributions Linux, comme Mandriva, ces composants peuvent être installés automatiquement depuis le CD d'installation.

Si vous désirez des cours de php, un très bon site gratuit : http://www.siteduzero.com pour vos débuts.

Vous devez intégrer votre script directement dans votre page html qui devra porter l'extension .phpx (x de 1 a 5) ou .php. Pour ce faire, il faut indiquer à PHP où commence votre code au moyen des balises <? ou <?php et ?> qui s'utilisent comme suit :

 <?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 
 <head>
     <title>Hello world</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 
 <body>
 
 <?php
 echo '<p>Hello world</p>';
 print('<p>Hello world</p>');
 ?>
 
 </body>
 </html>
 

Cet exemple affichera Hello World deux fois, "echo" et "print" étant des structures du langage permettant d'afficher une chaîne de caractères. Vous l'aurez compris : tout ce qui est situé entre les deux balises d'ouverture et de fermeture (<?php et ?>) est interprété par le serveur comme du code PHP. De plus vous aurez remarqué que le PHP se caractérise par la présence des ";" à la fin de chaque ligne, marquant la fin d'une instruction, contrairement à d'autres langages de scripts comme l'ASP.

 <?php
 $variable = 'test'; // variable de type string (chaîne de caractères)
 $chiffre = 12; // variable de type int (integrer, nombre entier)
 $tableau[0] = 1; // définition de l'offset 0 de l'array $tableau
 $tableau[1] = 2; // définition de l'offset 1 de l'array $tableau
 ?>
 

Comprenez ici qu'une variable PHP peut être de tous types (nous ne traiterons pas ici les variables de type objet) sans avoir à le définir au préalable (bien que cela reste possible).

Récupérer des infos et exprimer des conditions - réservé aux habitués à l'HTML :

 <?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 
 <head>
     <title>Barbie</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 
 <body>
 
 <?php // ceci est un commentaire, il sera ignoré lors de la génération de la page
 
 // vérifions si le formulaire a déjà été validé
 if (empty($_POST['age']) || empty($_POST['sexe'])) { // si un des deux champs du formulaire n'a pas été rempli
 // on affiche le formulaire
 ?>
 
 <form action="" method="post">
     <p>
     Âge :<br />
     <input type="text" name="age" />
     </p>
 
     <p>
     Sexe :<br />
     <input type="radio" name="sexe" value="garçon" checked="checked" /> garçon
     <input type="radio" name="sexe" value="fille" /> fille
     </p>
 
     <p>
     <input type="submit" value="Valider" />
     </p>
 </form>
 
 <?php
 }
 else { // sinon, si le formulaire est rempli
     if ($_POST['age'] >= 13) { // si l'âge est supérieur ou égal à 13
         if($_POST['sexe'] == 'garçon') { // et si le visiteur est un garçon ; remarquez l'opérateur logique "==" permettant de tester l'égalité
             echo '<p>Ceci est un site pour les petites filles, retourne étudier !</p>';
         }
         elseif($_POST['sexe'] == 'fille') { // on utilise ici "elseif", qui correspond logiquement à un else puis un if
             echo '<p>Tu joues encore aux Barbies ?</p>';
         }
     }
     else { // si l'âge est tout sauf supérieur ou égal à 13, donc strictement inférieur à 13
         if ($_POST['sexe'] == 'garçon') { // et si le visiteur est un garçon
             echo '<p>Tu n\'es pas une fille, retourne jouer aux voitures !</p>';
         }
         else { // enfin, si le visiteur est une fille de moins de 13 ans.
              echo '<p>Bienvenue dans l\'univers de Barbie !</p>';
         }
     }
 }
 ?>
 
 
 </body>
 </html>
 

La structure if/else permet d'énoncer une condition. Ici, nous avons utilisé "if", puis "elseif" c'est en fait la même structure que else, sauf que elseif correspond a un else suivi d'une condition. Précision : on peut remplacer les doubles conditions presenté ici, à savoir les conditions sur l'âge et le sexe, par une seule condition présentant une syntaxe différente composée de deux conditions internes au moyen de l'opérateur logique || (ou OR).

Exemple :

 <?php
 if ($_POST['age'] >= 13 || $_POST['sexe'] == 'garçon') { // si l'âge est supérieur ou égal à 13 ou que le visiteur est un garçon
     echo '<p>Ceci est un site pour les petites filles, retourne étudier !</p>';
 }
 else {
     echo '<p>Bienvenue dans l\'univers de Barbie !</p>';
 }
 ?>
 

La variable $_POST est une variable superglobale, c’est-à-dire que c'est une variable prédéfinie par PHP, et définie de manière globale (voir la documentation de PHP). Elle permet de récupérer les données fournies par le protocole HTTP en méthode POST, provenant ici du formulaire.

Il existe aussi la variable superglobale $_GET, permettant de récupérer les variables fournies au script via la chaîne de requête URL. Si vous avez une adresse du type /page.php?variable=valeur, vous aurez $_GET['variable'] qui vaudra "valeur".

Il faut noter qu'il existe également un autre moyen d'accéder aux variables GET et POST, qui est d'utiliser directement la variable sans passer par les tableaux superglobaux, c'est-à-dire en utilisant $variable au lieu de $_GET['variable']. Cette façon de procéder est fortement déconseillée car elle peut causer de graves problèmes de sécurité. De plus, depuis PHP 4.2.0, la directive register_globals est par défaut à Off (ce qui désactive une utilisation telle que $variable au lieu de $_GET['variable']), ce qui est un élément à prendre fortement en compte pour un programmateur soucieux de la portabilité de son code.

Pour plus d'informations sur les risques potentiels lorsque la directive register_globals est à On, vous pouvez consulter la page Utilisation des variables super-globales sur la documentation officielle de PHP.

Voir aussi

Liens externes

See also: PHP hypertext preprocessor, 13 juillet, 1994, 1995, 1997, 2002, 2004, APL (langage), ASP