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 |
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 :
- une API simple nommée SimpleXML,
- une API Document Object Model assez complète,
- une interface XPath utilisant les objets DOM et SimpleXML,
- intégration de libxslt pour les transformations XSLT via l'extension XSL.
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.
Php.gif
Php_ligne_de_commandes_script_exemple_hdparm.png
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
- phpBB
- Invision Power Board
- Fire-Soft-Board
- miniBB (Site officiel)
- Phorum (Site officiel)
- vBulletin (Site officiel)
- punBB (Site officiel)
- XMB (Site officiel)
- FUDforum (Site officiel)
- D'autres forums en PHP (libres) sont disponibles sur le site Framasoft
Portails (CMS)
- Xoops
- SPIP
- PHP-Nuke (Site officiel)
- Mambo (CMS) (Site officiel)
- NPDS (Site officiel)
- Geeklog (Site officiel)
- Drupal (Site officiel)
- D'autres CMS en PHP (libres) sont disponibles sur le site Framasoft
Certains portails reposent aussi sur un système de fichiers texte (sans SGBD)
- Portix-PHP (Site Officiel)
- Free-Guppy
- ChupiX (Site Officiel)
Administration base de données
Wiki
- MediaWiki
- WikiNi (Site officiel)
- PhpWiki (Site officiel)
- coWiki (Site officiel)
Autres
- paFileDB : Base de données de téléchargements (Site officiel)
Plate-forme LAMP
LAMP est un nom usuel pour désigner les plates-formes combinant :
- le système d'exploitation GNU/Linux
- le serveur Web Apache
- le système de bases de données MySQL
- et bien sûr PHP
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 :
- Exemple d'une page HelloWorld
<?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.
- Passons maintenant à la déclaration de variables. Sachez tout d'abord que les variables PHP sont précédées du signe $ et se définissent au moyen de l'opérateur d'assignation "=" :
<?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
- PHP.net : Site officiel de PHP
- Afup : Association Française des Utilisateurs de PHP
- NeXeN : Site de référence de la communauté PHP française - traduction des documentations de PHP et MySQL
- PHPQuébec : Association professionnelle des utilisateurs de PHP au Québec
- Le Site du Zer0 : Tutoriaux de PHP pour débutants, en français
- AFUP - Livre blanc du PHP en entreprise
- PHP-Help : Exemples et codes source PHP
- PHP Débutant Une initiation au PHP très complète et simple de compréhension
- ComentCaMarche - PHP : Brève introduction au PHP
- ComScripts - PHP : Annuaire de scripts PHP
- PHPScripts : Annuaire de scripts PHP
- PHP-Admin : Annuaire de scripts PHP
