tutoriel pour apprendre à créer un site internet avec PHP
...
Le fonctionnement
Il est à noter une différence avec les autres scripts CGI écrits dans d'autres langages tels que le Perl ou le C : au lieu d'écrire un programme avec de nombreuses lignes de commandes afin de générer une page HTML, avec PHP, vous écrivez une page HTML avec du code PHP inclus à l'intérieur afin de réaliser une action précise.
Le code PHP est inclus entre une balise de début et une balise de fin qui permettent au serveur web de passer en "mode PHP".
La connaissance du code HTML est donc vivement conseillée, voir même indispensable pour commencer ses premières pages en PHP (ceci car le PHP ne fait que générer du code HTML ; et qu'il est inconcevable de générer quelque chose que l'on ne maîtrise pas).
Il faut également savoir que lorsque vous insérez le moindre petit bout de code PHP dans une page HTML, vous devrez changer l'extension de ce fichier en .php (en clair : si vous avez une page nommée index.htm et que vous y insérez du code PHP, il vous faudra la renommer en index.php).
Comme nous venons de le voir, il est tout à fait possible de mélanger, au sein d'une même page WEB, des instructions HTML et des instructions PHP.
Seulement, pour que le serveur qui vous héberge puisse repérer les portions de code en PHP, il suffit simplement de lui indiquer le début ainsi que la fin du code PHP. Ces marques qui délimitent la portion de code, s'appellent des balises :
- on utilisera la balise <?php pour marquer le début d'une portion de code PHP
- on utilisera la balise ?> pour marquer la fin d'une portion de code PHP
Les instructions du code PHP se placeront naturellement entre ces deux balises.
exemple1
<html>
<head>
<title>Test</title>
</head>
<body>
<p>un bout de code en HTML</p>
<?php
echo 'Mon premier script en PHP';
?>
</body>
</html>
Ne vous inquiétez pas pour le moment, on décrira plus tard ce que produit cette ligne de PHP.
Ce petit exemple est juste là pour vous montrer comment on insère du code PHP dans une page WEB.
Comme tout bon langage de programmation, PHP offre la possibilité de commenter son code.
Pour cela, deux techniques :
- pour commenter une seule ligne de code PHP, on précédera cette ligne de deux slashs //
- pour commenter une portion de code, on précédera la première ligne de code que l'on souhaite commenter par un /* et on fera suivre la dernière ligne de code que l'on souhaite commenter par un */
exemple2
<?php
// ceci est un commentaire sur une seule ligne
/* ceci est
un commentaire
sur plusieures lignes */
?>
Ce qui distingue le PHP des langages de script comme le Javascript est que le code est exécuté sur le serveur.
Si vous avez un script similaire sur votre serveur, le client ne reçoit que le résultat du script, sans aucun moyen d'avoir accès au code qui a produit ce résultat. Vous pouvez configurer votre serveur web afin qu'il analyse tous vos fichiers HTML comme des fichiers PHP.
Ainsi, il n'y a aucun moyen de distinguer les pages qui sont produites dynamiquement des pages statiques.
Le grand avantage de PHP est qu'il est extrêmement simple pour les néophytes, mais offre des fonctionnalités avancées pour les experts.
Ne craignez pas de lire la longue liste de fonctionnalités PHP. Vous pouvez vous plonger dans le code, et en quelques instants, écrire des scripts simples.
Bien que le développement de PHP soit orienté vers la programmation pour les sites web, vous pouvez en faire bien d'autres usages.
Les besoins pour bien commencer
Pour bien commencer, il vous faut deux choses essentielles :
- un éditeur de texte pour écrire vos portions de code en PHP
- un environnement de développement afin de tester ces portions de code
En ce qui concerne les éditeurs de textes, vous pourrez en trouver des dizaines sur la toile, suivant votre système d'exploitation et vos diverses exigences de fonctionnalités.
Pour vous décider, vous pouvez consulter des sites comparants des nombreux éditeurs.
Pour l'environnement de développement, si vous ne voulez pas trop vous compliquer la vie est installant Apache, PHP et MySQL à la main, je vous conseille d'utiliser des "packages" proposant des solutions pretes à l'emploi.
En quelques clics, votre environnement sera installé et fonctionnel.
Voici quelques sites proposant ce genre d'environnement :
- EasyPHP (Windows)
- wampserver (Windows)
- mamp (Apple)
- BigApache
Conclusion
Peu de choses à dire pour ce premier cours, si ce n'est qu'il faut bien comprendre le fonctionnement de PHP : PHP travaille du côté serveur et non du côté client.
C'est à dire que PHP va générer des pages compréhensibles par les navigateurs WEB des clients, soit de l'HTML (un navigateur WEB ne comprend pas le PHP).
A ne pas oublier :
- insertion de code PHP à l'aide des balises <?php et ?>
- renommer les fichiers HTML contenant du PHP en .php
- écrire des commentaires sur son code PHP avec un // ou un /* ... */
Bien démarrer avec EasyPHP
Afin de bien démarrer la programmation PHP sous Windows, le mieux est d'utiliser EasyPHP (que vous pouvez télécharger ici).
En effet, je vous rappelle qu'EasyPHP (voir le site officiel ici) est une petite application qui fonctionne sous Windows et qui est en fait une sorte de package qui vous installera tout ce dont vous avez besoin pour débuter en PHP :
- un serveur http (Apache)
- PHP
- un serveur de base de données (MySQL)
- un script d'administration de vos bases de données (PHPMyAdmin)
Note : ce cours traite de l'installation d'EasyPHP version 1.6. Depuis la parution de ce cours, de nouvelles versions d'EasyPHP ont pu sortir, et des variantes dans la méthode d'installation peuvent donc exister.
Une fois l'exécutable téléchargé, double cliquer dessus afin de démarrer l'installation.
Vous devriez alors voir la fenêtre suivante :
Accepter, et de même, prenez connaissance du contrat de licence.
Choisissez ensuite le répertoire d'installation d'EasyPHP (nous, nous avons laisser le répertoire proposé par l'installateur, c'est-à-dire le répertoire C:Program FilesEasyPHP).
Confirmez, l'installation devrait ensuite se poursuivre sans aucun problème.
Une fois l'installation achevée, vous devriez vous retrouver devant l'écran suivant :
Terminer l'installation en cliquant sur Terminer (ils sont forts chez EasyPHP quand même hein ^^).
Une fois ceci fait, dans votre barre des taches Windows (en bas à droite), vous devriez avoir une icône représentant un E.
En approchant votre souris dessus, une petite bulle d'aide devrait vous dire qu'EasyPHP est arrêté.
Si tel est le cas, faites un clic droit dessus, et dans le menu qui s'affiche, sélectionner l'option Démarrer.
Le petit E devrait maintenant vous informer que votre EasyPHP est en état de marche.
Remarquer au passage, qu'à côté du E, un petit point rouge devrait clignoter.
Faites maintenant un clic droit (toujours sur le E) et dans le menu contextuel, choisissez l'option Web local.
La fenêtre Web suivante devrait alors s'ouvrir sous vos yeux.
Noter qu'il n'y a aucun répertoire à la racine d'Apache, ce qui est normal puisque nous n'avons, pour l'instant, écrit aucun script PHP.
Rendez-vous alors dans le répertoire C:Program FilesEasyPHPwww (naturellement, si vous avez un autre répertoire d'installation que celui proposé par défaut, vous devez aller à votre répertoire d'installation).
Ne supprimer surtout pas le fichier index.php (en effet, c'est grâce à ce fichier que nous avons pu avoir la page Web précédente).
Créer alors un répertoire du nom de votre choix (nous, nous l'avons nommé premier_script).
Ouvrer alors ce répertoire, et dedans, créer un nouveau fichier PHP (index.php par exemple).
Ouvrer ce fichier, et placez y dedans, le code suivant :
<?php
phpinfo();
?>
Fermer votre fichier en le sauvegardant au passage, puis retourner à votre Web local.
Rafraîchissez votre page, et normalement, vous devriez avoir l'écran suivant :
En effet, c'est là que nous voyons l'intérêt du fichier index.php (pas le notre, celui du répertoire www) : en fait, il scanne le répertoire www à la recherche de tous les répertoires (vous devrez par la suite créer un répertoire pour chacun de vos projets PHP).
Cliquer alors sur le lien premier_script.
L'écran suivant devrait maintenant apparaître.
En effet, que s'est il passé ?
Et bien, en ouvrant ce répertoire, Apache est parti à la recherche d'un fichier de type index.
Il l'a trouvé, et il s'est rendu compte que c'était un fichier php.
Il a alors passé la main à PHP qui s'est mis à interprété le code php contenu dans ce fichier (notre phpinfo()), ce qui a permis à Apache de nous afficher le résultat de l'interprétation du code PHP.
Faites maintenant un clic droit sur le E qui est dans la barre des taches.
Sélectionner l'option Administration dans le menu contextuel.
L'écran suivant devrait alors apparaître :
Cliquer sur PHPMyAdmin (afin de gérer toutes vos bases de données).
L'écran suivant apparaît alors.
Il s'agit de PHPMyAdmin, un script qui vous permettra d'administrer toutes vos bases de données sur une page WEB (ce qui est beaucoup plus pratique que de le faire directement en ligne de commande via MySQL).
Une fois votre utilisation terminée d'EasyPHP, n'oubliez surtout pas de l'éteindre !!!
Pour cela, faites un clic droit sur le E de votre barre des taches, et choisissez l'option Arrêter du menu contextuel.
Cela aura pour effet de couper votre serveur http (Apache) ainsi que votre serveur de bases de données (MySQL).
En effet, si vous ne coupez pas votre EasyPHP, il faut que vous sachiez que si votre port 80 est consultable de l'extérieur, n'importe qui peut à accéder à la racine de votre Apache, et donc de voir sur quoi vous travaillez en ce moment même.
Naturellement, cette personne doit connaître votre adresse IP pour pouvoir faire ceci.
Et voila, vous voici fin prêt à attaquer tous les autres cours de ce site, pour enfin, faire vos tous premiers scripts PHP :)
Déclarer des variables
Etudions dans un premier cours la déclaration des différents types de variables.
Pour simplifier les choses, nous allons admettre qu'une variable correspond à un espace de la mémoire où l'on peut stocker une information.
Or, afin de pouvoir récupérer cette information lorsque l'on en a besoin, nous allons attribuer un nom à notre variable (si mes prof m'entendaient parler, ils me zapperaient tous mes diplômes).
En PHP, les variables sont représentées par une chaîne de caractères, ayant toujours comme premier caractère, le caractère dollar ($).
Les variables peuvent avoir n'importe quelle lettre en deuxième caractère du moment qu'il ne s'agit pas d'un chiffre.
De plus, on ne peut mettre d'espace dans le nom d'une variable.
Puis, pour assigner une valeur à une variable, on tachera d'utiliser l'opérateur =, tout en prenant soin de toujours placer la variable qui reçoit le résultat d'une opération à gauche du signe =.
Démonstration :
- Lorsque l'on désire affecter une chaîne de caractères à une variable, il faut placer cette chaîne de caractères entre deux ".
- Lorsque l'on désire affecter une valeur numérique à une variable, il ne faut pas placer de " autour cette valeur (en fait, c'est possible de mettre des " autour d'une valeur numérique, mais ensuite, il faut être vraiment vigilent, car on pourrait faire la confusion entre une valeur numérique et une chaîne de caractères).
Voici quelques exemples de déclarations de variables :
<?phpphp
$nom = "LA GLOBULE";
// $nom contient alors la chaîne de caractères LA GLOBULE.
$mon_chiffre = 12;
// $mon_chiffre contient la valeur numérique 12.
$5toto = "test";
// Cette déclaration n'est pas valide car le nom de la variable commence par un chiffre
?>
Voyons maintenant la déclaration des variables de type tableau (array).
Pour ceux qui sont débutants en programmation, nous allons prendre un exemple plutôt simplet afin de comprendre ce qu'est un tableau.
Imaginons un classeur d'écolier (ce sera notre tableau) contenant différentes feuilles (qui seront les indices du tableau).
Imaginons également que ces feuilles soient numérotées, et chaque feuille contienne un texte particulier. Dés lors, on peut chercher le contenu d'une feuille de ce classeur grâce à son numéro (on cherche donc l'information contenu dans le classeur à la page numéro x).
En informatique, un tableau, c'est exactement la même chose que notre classeur. Il s'agit d'une variable contenant différentes informations (les textes) et ces informations sont classées suivant le numéro de l'indice (c'est à dire le numéro de la feuille).
Par exemple, supposons que l'on ai la variable $fruit de type array.
On pourrait alors avoir le code suivant :
<?php
$fruit[0] = "fraise";
$fruit[1] = "banane";
$fruit[2] = "abricot";
?>
En reprenant l'exemple du classeur, c'est comme si nous avions un classeur de nom fruit, ayant 3 pages :
- sur la page 0, on aurait l'information fraise
- sur la page 1, on aurait l'information banane
- sur la page 2, on aurait l'information abricot
Nous venons, dans ce bout de code, de déclarer une variable de type array qui comporte 3 éléments (les pages).
Nous aurions eu le même résultat en exécutant le bout de code suivant :
<?php
$fruit[] = "fraise";
$fruit[] = "banane";
$fruit[] = "abricot";
?>
En revanche, cette syntaxe est moins lisible, vu que souvent, on n'arrive plus vraiment à savoir à quelle page se trouve l'information recherchée (on s'emmêle dans les indices).
Aparté !
- Au lieu d'utiliser des chiffres pour les indices (comme dans notre exemple où nous avons utilisé les indices 0, 1 et 2) nous pouvons très bien utiliser des chaînes de caractères.
Ce qui pourrait alors donner :
<?php
$fruit['le_meilleur'] = "fraise";
$fruit['le_prefere_de_Julien'] = "banane";
$fruit['mon_prefere'] = "abricot";
?>
Or dans ce cas, il faut évidement utiliser pour chaque indice du tableau, une chaîne de caractère unique.
- nous pouvons également déclarer des tableaux à plusieurs éléments. Pour ceux qui désirent vraiment exploiter cette possibilité, je vous invite à aller consulter la documentation officielle PHP.
Afficher le contenu des variables
Lors de cet exercice, nous allons mettre en pratique notre premier bout de code en PHP.
Il faut également savoir que toutes les variables en PHP commencent par le signe dollar ($), et il faut également ne pas oublier de placer un ; à chaque fin d'instruction PHP.
Etudions le code suivant :
<?php
$nom = "LA GLOBULE";
echo 'Bonjour ';
echo $nom;
echo ' !';
?>
Ce qui affichera à l'écran :
Bonjour LA GLOBULE !
En effet, nous avons placé la chaîne de caractères LA GLOBULE dans la variable $nom, puis nous avons demander à PHP d'écrire la chaîne de caractères Bonjour, puis le contenu de la variable $nom (qui contient donc la chaîne LA GLOBULE), et enfin, nous affichons un !.
Ce qui donne bien comme résultat "Bonjour LA GLOBULE !"
(Remarquons au passage qu'une variable contenant une chaîne de caractères se déclare en mettant le nom de la variable puis un signe = et enfin, la chaîne de caractères entre deux ").
Au passage, remarquons également que nous venons d'apprendre notre première commande PHP, la commande echo(). Cette fonction nous permet d'afficher à l'écran des chaînes de caractères, qui peuvent être définies directement par l'utilisateur (comme lorsque l'on fait un echo 'Bonjour ';) ou qui peuvent être des contenus de variables (lorsque l'on fait echo $nom;).
Attention !!!
En effet, si nous avions écris le code suivant :
<?php
$nom = "LA GLOBULE";
echo 'Bonjour ';
echo '$nom';
echo ' !';
?>
Nous aurions eu à l'écran :
Bonjour $nom !
Attention donc à bien utiliser les ' qui ne servent qu'à délimiter les chaînes de caractères, et donc, il ne faut surtout pas les utiliser pour afficher le contenu d'une variable. En effet, lorsque l'on tape echo '$nom'; PHP pense que l'on désire afficher la chaîne de caractères $nom et non le contenu de la variable $nom.
Prenons un autre exemple où nous allons afficher la date et l'heure du jour.
On a le code suivant :
<?php
$date_du_jour = date ("d-m-Y");
$heure_courante = date ("H:i");
echo 'Nous sommes le : ';
echo $date_du_jour;
echo ' Et il est : ';
echo $heure_courante;
?>
Ce qui affichera à l'écran :
Nous sommes le 17-09-2002 Et il est 12:10
Dans ce cas, nous venons d'utiliser la fonction date() qui nous permet d'afficher la date du jour ainsi que l'heure courante (en fait, la date du serveur). Dans un premier temps, nous avons affecté à la variable $date_du_jour le contenu que retourne la fonction date() munie des paramètres "d-m-Y", soit 17-09-2002, puis nous avons affecté à la variable $heure_courante le contenu que retourne la fonction date() munie des paramètres "H:i", soit 12:10.
Voici la liste des paramètres possibles pour la fonction date() :
- a : "am" (matin) ou "pm" (après-midi)
- A : "AM" (matin) ou "PM" (après-midi)
- d : Jour du mois, sur deux chiffres (éventuellement avec un zéros) : "01" à "31"
- D : Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi)
- F : Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier)
- h : Heure, au format 12h, "01" à "12"
- H : heure, au format 24h, "00" à "23"
- g : Heure, au format 12h sans les zéros initiaux, "1" à "12"
- G : Heure, au format 24h sans les zéros initiaux, "0" à "23"
- i : Minutes; "00" à "59"
- j : Jour du mois sans les zéros initiaux: "1" à "31"
- l : Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi)
- L : Booléen pour savoir si l'année est bissextile ("1") ou pas ("0")
- m : Mois; i.e. "01" à "12"
- n : Mois sans les zéros initiaux; i.e. "1" à "12"
- M : Mois, en trois lettres (et en anglais) : par exemple "Jan" (pour Janvier)
- s : Secondes; i.e. "00" à "59"
- S : Suffixe ordinal d'un nom
Les variables prédéfinies
Voyons maintenant les variables d'environnements.
En effet, PHP propose toute une série de variables qui sont déjà présentes dans le langage sans que vous n'ayez à les déclarer. Ces variables s'écrivent toujours en majuscules et nous fournissent divers renseignements.
Voici la liste des variables d'environnement existantes :
:: Variable :: :: Description ::
$_SERVER['DOCUMENT_ROOT'] Racine du serveur
$_SERVER['HTTP_ACCEPT_LANGUAGE'] Langage accepté par le navigateur
$_SERVER['HTTP_HOST'] Nom de domaine du serveur
$_SERVER['HTTP_USER_AGENT'] Type de navigateur
$_SERVER['PATH_INFO'] Chemin WEB du script
$_SERVER['PATH_TRANSLATED'] Chemin complet du script
$_SERVER['REQUEST_URI'] Chemin du script
$_SERVER['REMOTE_ADDR'] Adresse IP du client
$_SERVER['REMOTE_PORT'] Port de la requête HTTP
$_SERVER['QUERY_STRING'] Liste des paramètres passés au script
$_SERVER['SERVER_ADDR'] Adresse IP du serveur
$_SERVER['SERVER_ADMIN'] Adresse de l'administrateur du serveur
$_SERVER['SERVER_NAME'] Nom local du serveur
$_SERVER['SERVER_SIGNATURE'] Type de serveur
$_SERVER['REQUEST_METHOD'] Méthode d'appel du script
Ces variables peuvent être utilisées n'importe quand dans vos scripts.
Voici un exemple où vous pouvez afficher l'adresse IP de la personne qui se connecte sur votre site :
<?php
echo 'Votre adresse IP est : '.$_SERVER['REMOTE_ADDR'];
?>
Ce qui affichera à l'écran :
Votre adresse IP est : 80.12.45.26
(par exemple)
Concaténer deux chaînes
Voyons maintenant la concaténation de chaîne de caractères.
Déjà, il faut bien savoir ce qu'est la concaténation de chaîne de caractères. Prenons un exemple simple avec deux chaînes de caractères :
- la première chaîne de caractères sera : "J'apprend "
- la seconde chaîne sera : "le PHP"
En faisant une concaténation de ces deux chaînes, nous obtiendrons la chaîne suivante : "J'apprend le PHP".
Tachons maintenant de mettre alors en évidence l'importance de la concaténation de chaîne de caractères avec l'exemple de l'exercice précédent.
On avait alors comme code PHP :
<?php
$nom = "LA GLOBULE";
echo 'Bonjour ';
echo $nom;
echo ' !';
?>
Or, les trois lignes avec l'instruction echo() peuvent se simplifier en une seule grâce à la concaténation. En PHP, la concaténation de chaîne s'effectue grâce au point.
On a alors :
<?php
$nom = "LA GLOBULE";
echo 'Bonjour '.$nom.' !';
?>
Ce qui affichera à l'écran :
Bonjour LA GLOBULE !
Résumons les choses :
On affiche en fait la chaîne Bonjour concaténée avec le contenu de la variable $nom, soit LA GLOBULE, également concatène avec la chaîne !, ce qui au final, se résume par l affichage de la chaîne Bonjour LA GLOBULE.
La encore, il faut faire attention car si l'on avait écrit echo 'Bonjour $nom !'; donc sans l'opérateur de concaténation qu'est le point, on aurait eu à l'écran l'affichage suivant :
Bonjour $nom !
(Car dans ce cas, PHP comprend que l'on désire afficher la chaîne $nom et non le contenu de la variable $nom).