Rencontre des réseaux du projet Noria
Formateur
KEBIR Mohamed Ines
1- Qu'est-ce que PHP ? 3
2- Fonctionnement. 3
3- Langages concurrents pour la génération des sites dynamiques 3
4- Avantages, limitations. 4
II-Mise en œuvre et déploiement
1- EasyPHP. 5
2- Configuration et paramétrage (). 6
3- Présentation des options les plus courantes. 7
III-Les fonctionnalités du langage
1- Premiers éléments du langage. 8
2- Intégration de PHP dans une page HTML. 8
3- Variables, chaînes et concaténation 9
4- Conditions et boucles 11
5- Fonctions 15
6- Tableaux 18
7- Variables serveur 22
IV- Accès fichiers
1- Ouverture / fermeture de fichier 23
2- Lecture de fichier 23
3- Ecriture dans fichier 25
4- Fonctions diverses 26
V- Passage et transmission de variables
1- Par formulaire 27
2- Par hyperlien 29
3- Redirection 30
VI- Variables persistantes
1- Les cookies 31
2- Les sessions 33
VIII- Utilisation d'une base de données MySql
1- Introduction 35
2- Concepts fondamentaux : Bases, tables, champs, enregistrements. 35
3- Administration de MYSQL 36
4- SQL : petit récapitulatif du langage 36
5- Accéder à MYSQL via PHP. 37
IX- L'évolution de PHP en PHP5 38
X- Webographie 38
1- Qu'est-ce que PHP ?
PHP (officiellement "PHP: Hypertext Preprocessor") 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. On désigne parfois PHP comme une plate-forme plus qu'un simple langage.
Sa syntaxe et sa construction ressemblent à celles des langages C++ et Perl, à la différence que le PHP peut être directement intégré dans du code HTML.
Exemple
<html>
<head>
<title>Exemple</title>
</head>
<body>
<?
echo "Bonjour, je suis un script PHP!";
?>
</body>
</html>
L'objet de ce langage est de permettre aux développeurs web d'écrire des pages dynamiques rapidement.
2- Fonctionnement :
PHP n'est pas un langage compilé, c'est un langage interprété par le serveur : le serveur lit le code PHP, le transforme et génère la page HTML. Pour fonctionner, il a donc besoin d'un serveur web. De ce fait une plateforme minimale de base pour l’exécution d’un site web développé en PHP comprend :
-l’interpréteur PHP (serveur PHP)
-un serveur web (Apache, IIS, …)
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).
De ce fait le code PHP n’est jamais visible sur la page finale consultée par le client. Ainsi en éditant le source de la page on n’y trouvera que du code HTML.
3- Langages concurrents pour la génération des sites dynamiques.
JSP, ASP, PYTHON, Perl, coldfusion, CGI
4- Avantages, limitations.
Le langage PHP possède les même fonctionnalités que les autres langages permettant d'écrire des scripts CGI, comme collecter des données, générer dynamiquement des pages web ou bien envoyer et recevoir des cookies, … .
- La plus grande qualité et le plus important avantage du langage PHP est le support d'un grand nombre de bases de données et la simplicité d’interfaçage avec eux.
- PHP est utilisable sur la majorité des systèmes d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX, Solaris et OpenBSD), Microsoft Windows, Mac OS X, RISC OS et d'autres encore.
- PHP supporte aussi la plupart des serveurs web actuels : Apache, Microsoft Internet Information Server, Personal Web Server, Netscape et iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd et beaucoup d'autres encore.
- La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL) - La simplicité d'écriture de scripts (apprentissage rapide);
Limitations :
- Langage interprété
- L’orienté objet reste limité
- Pas adéquat en terme de rapidité et de maintenabilité pour des projet de grandes envergures
EasyPHP est un paquetage contenant à la fois Apache, PHP et MySQL
EasyPHP permet d’installer automatiquement et facilement une plateforme permettant l’exploitation d’un site web en PHP qui éventuellement aurait besoin d’un accès a une base de données. De la sorte on se libère des complications d’une installation manuelle de chacune de composantes séparément.
Procédure d’installation :
• Télécharger EasyPHP sur le site
• Double cliquer sur l'exécutable téléchargé
• Sélectionner le répertoire d'installation et suivre la procédure
Procédure de lancement :
Lorsqu'EasyPHP est lancé, les serveurs Apache et MySQL sont automatiquement lancés (il est même possible de le faire automatiquement au démarrage de Windows). Une petite icône s'installe dans la barre des tâches, à côté de l'horloge, permettant un accès rapide aux fonctions proposées par EasyPHP :
• Fichier Log : renvoie aux erreurs générées par Apache et MySQL
• Configuration : donne accès aux différentes configurations d'EasyPHP
• Administration : gestion des répertoires virtuels, des extensions, de PHPMyadmin
• Web local : ouvre la page http://localhost/ répertoire racine du site
• Démarrer/Arrêter : démarre/arrête Apache et MySQL
• Quitter : ferme EasyPHP
Pour que vos pages PHP soient interprétées, il est impératif de placer vos fichiers dans le répertoire www (sus le répertoire d’installation de easyphp). Ce répertoire est configuré par défaut comme répertoire racine de votre serveur web. Le serveur Apache est configuré pour ouvrir automatiquement un fichier index lorsque vous saisissez l'adresse 'http://localhost/' (à condition évidemment que le serveur Apache soit en route). Cette page sert de page d'accueil au web local et permet de vérifier le bon fonctionnement d'EasyPHP.
Il est conseillé de créer un répertoire par projet dans le répertoire www afin d'avoir une vision plus claire des développements.
Il est en outre possible de créer des répertoires virtuels. Ces répertoires virtuels peuvent être créé physiquement n’importe ou sur votre disque dur. Il suffira de leur associer un nom virtuel avec lequel le serveur apache le reconnaîtra.
Lors de l’installation de PHP, un fichier de configuration nommé « » sera créé sur votre système. Le fichier est le fichier de configuration de serveur PHP. Ce fichier respecte la structure des fichiers INI bien connus de nombreuses applications Windows. Il s'agit d'un fichier texte ASCII divisé en plusieurs sections, chacune portant un nom et contenant des variables relatives à la section concernée.
Chaque section ressemble au fragment suivant :
[MaSection] variable="valeur" autrevariable="autrevaleur"
Le nom de la section figure au début entre crochets, suivi d'un certain nombre de paires nom/valeur, chaque paire figurant sur une ligne distincte. Comme pour tout code PHP, les noms des variables font la distinction entre majuscules et minuscules et ne peuvent pas contenir d'espace. Les valeurs peuvent quant à elles être numériques, booléennes ou correspondre à une chaîne.
Les lignes en commentaires commencent par un « ; »
Toute modification du fichier nécessite un redémarrage du serveur afin que la nouvelle configuration soit prise en compte.
Par défaut le fichier est configuré de sorte à être fonctionnel. Intervenir sur ce fichier peut être intéressant pour rajouter de nouveaux modules ou pour affiner certains paramètres de sécurité mais doit systématiquement faire l’objet d’un backup de sécurité au préalable.
Quelques exemples de paramétrage :
Les erreurs PHP se répartissent en quatre catégories: erreurs du parseur, notifications de bugs dans le code (par exemple, des variables non initialisées), avertissements (erreurs non fatales) et erreurs fatales. Normalement, lorsque PHP détecte une erreur de parseur, non fatale ou fatale, il affiche l'erreur et, si elle est fatale, il arrête également de traiter le script à ce stade. Vous pouvez modifier ce comportement à l'aide de la variable error_reporting, qui accepte un champ binaire des codes d'erreurs et n'affiche que les erreurs correspondant à ces codes:
La configuration suivante par exemple permet l’affichage de tout type d’erreur. error_reporting = E_ALL
Pour désactiver l'affichage des erreurs (recommandé en production), désactivez la variable display_errors et inscrivez plutôt les messages dans un journal des erreurs à l'aide de la variable log_errors.
Cette technique est également efficace pour des raisons de sécurité: en désactivant les erreurs, vous masquez des informations spécifiques du système que des utilisateurs peu scrupuleux pourraient exploiter pour essayer de nuire à votre site ou votre application. Définissez donc l'écriture de ces erreurs dans un fichier journal personnalisé ou dans le journal système, en paramétrant la variable error_log sur le nom d'un fichier .
display_errors = Off log_errors = On
error_log = ""
- file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.
- upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
- upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
- post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize.
- register_globals = Off [sécurité, performance]
Depuis la version 4.2.0 de PHP, la valeur par défaut de register_global est à Off dans le . Dorénavant une variable envoyée par un formulaire (méthode POST) n'est plus récupérée avec $variable mais avec $_POST["variable"]. Toutes les variables globales sont concernées (POST, GET, cookies, environnement et autres variables serveur : $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, $_SESSION). Ceci peut nécessiter la réécriture partielle de certains scripts.
Rq : il est vivement conseillé d'utiliser cette configuration qui est celle adoptée par défaut depuis PHP 4.2.0 et de coder vos scripts en conséquence. Cependant si vous souhaitez utiliser d'anciens scripts sans avoir à les réécrire, vous avez toujours la possibilité de remettre dans le fichier register_global à On.
3- Présentation des options les plus courantes.
Le Menu de EASYPHP offre les fonctionnalités suivantes :
• Fichier Log
Ce menu permet de visualiser l’ensemble des fichier logs que Apache et MYSQL génèrent. PHP ne générant pas de fichier log puisqu’il ne fonctionne qu’au travers d’Apache.
• Configuration
Ce menu donne accès aux fichiers de configurations suivants :
-Apache :
-Extension PHP :
-PHP :
-MYSQL :
-PHPMyadmin
• Administration
-Ce menu va permettre entre autre de créer des répertoires virtuels pour les sites web que vous allez créer.
-Il permettra en outre d’accéder à PHPMyadmin afin de gérer vos bases de données.
• Web local
• Démarrer/Arrêter
• Quitter
1- Premiers éléments du langage.
Lorsque vous créez un code, il doit être placé entre balises php pour que celui- ci soit interprété, comme ceci:
<? echo 'bonjour'; ?>ou encore <?PHP echo 'bonjour'; ?> Ce qui affichera à l'écran ‘ bonjour ’. |
Une syntaxe PHP se termine TOUJOURS par un point-virgule, si vous l'oubliez vous verrez apparaître une PARSE ERROR lors de l'exécution de votre fichier.
Les commentaires peuvent se présenter sous deux formes :
<?
//ceci est
// un commentaire
/* ceci est
un commentaire */
?>
2- Intégration de PHP dans une page HTML.
a- Généralités
L'un des avantages du PHP est qu'il s'intègre facilement dans du code HTML classique. Chacun peut à sa guise inclure quelques parties en PHP dans des parties de code HTML.
Remarque importante :
Du moment que des parties de code PHP ont été intégrées dans une page HTML cette dernière doit impérativement être renommée en extension .php
Exemple
<html> <body> <font size="2" face="Arial">Le texte en HTML</font> <br> <? echo"<font size=\"2\" face=\"Arial\"> Le texte est en PHP.</font>"; ?> <br> <font size="2" face="Arial"> < ? echo ‘Encore du texte en PHP’ ?></font> </body> </html> Le résultat obtenu sera : Le texte est en HTML Le texte est en PHP Encore du texte en PHP |
b-La fonction include()
La fonction include() de PHP permet d’inclure un fichier dans un autre lors de son exécution. Un élément HTML répétitif qui apparaît dans toutes les pages de votre site (menu par exemple) pourra être isolé dans un fichier PHP. Un appel de ce fichier grâce à la fonction include() apparaîtra dans toutes les pages de votre site. Ainsi si le menu doit être par exemple modifié il suffira uniquement de changer le fichier contenant le menu.
Syntaxe
<?
Include ("nom_du_fichier_a_inclure") ;
?>
Dans l’exemple suivant un fichier contiendra le code HTML nécessaire à la génération d’un menu en HTML.
Un second fichier inclura ce fichier .
Exemple fichier
<a href= "" > Menu1 </a><br>
<a href="/" > Menu2 </a><br>
<a href="/" > Menu3 </a><br>
Fichier
<html> <body> <? Include ("") ; / /inclusion du fichier contenant le menu ?> </body> </html> Le résultat obtenu sera : Menu1 Menu2 Menu3 |
Remarque : Il ne faut exécuter que le fichier .
Ainsi toutes les pages du site sensées contenir ce menu intègreront grâce à la fonction include() le fichier .
Il suffira de changer le fichier afin que toutes les pages qui l’intègrent se trouvent automatiquement changées.
Une variable est définie sous la forme $variable_nom.
L’affectation d’une variable se fait de la manière suivante : $variable_nom = variable_valeur. L’appel de la valeur affectée à une variable se fait par son nom.
Syntaxe
<? $variable1 = 'Bonjour 1'; | //Affectation d’une chaîne avec quote simple |
$variable2 = ’’Bonjour 2’’; $variable3 = 5; $variable4 = 2 + (3 * 5); $variable5 = true; ?> | // Affectation d’une chaîne avec quote double // Affectation d’un entier // Affectation d’un résultat d’opération // Affectation Booléenne |
L’affichage des variables combinées à des chaînes de caractères peut se faire de plusieurs manières en utilisant les cotes simples (' ) ou les doubles cotes ('' ).
<? $nom = 'visiteur'; echo "bonjour $nom"; ?> Le résultat obtenu sera : bonjour visiteur |
<? $nom = 'visiteur'; echo 'bonjour '.$nom; ?> Le résultat obtenu sera : bonjour visiteur |
Remarque : Il y'a un . entre le ' et la variable $nom. Le point est un opérateur de concaténation pour les chaînes de caractères.
<? $nom = 'visiteur'; echo 'bonjour $nom'; // La variable $nom ne sera pas interprétée ?> Le résultat obtenu sera : bonjour $nom |
Remarques :
Si vous utilisez les ' au lieu des " , la variable n'est pas interprétée comme une variable mais comme une chaîne de caractère.
Remarque sur l’usage des cotes simples ou doubles
Lors de l’usage des ' pour l’affichage d’une chaîne de caractère contenant des apostrophes, vous devez impérativement faire précéder ces apostrophes d'antislash. De la sorte l’apostrophe ne sera pas confondue avec le caractère de fin de la chaîne à afficher. Dans le cas contraire un message d’erreur sera affiché.
<? echo 'vous n\'êtes pas inscrit'; ?> Le résultat obtenu sera : Vous n’êtes pas inscrit |
Il en va de même lors de l’usage de ’’ pour l’affichage d’une chaîne de caractère contenant au préalable des doubles cotes.
<? echo"<a href=\"http://www-etu\"></a>"; ?> Le résultat obtenu sera : |
4- Conditions et boucles.
a- Conditions if
La syntaxe de base d’une instruction conditionnelle est la suivante :
<? if($var == ’condition’) { // ’condition vérifiée’; } else { //’condition non vérifiée’; } ?> |
Les opérateurs de contrôle sont les suivants :
== | strictement égal | |
!= | différent | |
> | plus grand que | |
< | inférieur à | |
>= | supérieur à | |
<= | inférieur à | |
&& | et | |
|| | ou | |
AND | et | |
OR | ou | |
TRUE | 1 ou oui | |
FALSE | 0 ou non |
Exemple
<? $montant='100'; if ($montant <1000) { echo 'Montant inférieur à 1000'; } else { echo 'Montant supérieur à 1000'; } ?> Le résultat obtenu sera : Montant inférieur à 1000 |
b-Conditions elseif
<? If ($var == ’condition1’) { // ’condition1 vérifiée’; } elseif ($var == ’condition2’) { // ’condition2 vérifiée’; } … elseif ($var == ’conditionN) { // ’conditionN vérifiée’; } … else { echo ’Aucune condition n’est vérifiée’; } ?> |
Les structures elseif pouvant se répéter autant de fois que des conditions prévues l’exigeront.
Exemple 1
<? $montant='100' ; if ($montant >=0 && $montant<1000) { echo ' Votre montant '. $montant. ' est compris entre 0 et 1000'; } elseif ($montant >=1000 && $montant<5000) { echo ' Votre montant '. $montant. ' est compris entre 1000 et 5000'; } else { echo ' Votre montant '.$montant. ' est supérieur à 5000'; } ?> Le résultat obtenu sera : Votre montant 100 est compris entre 0 et 1000 |
Exemple 2
<? $variable = 3; // serie de tests if ($variable == 1) { echo 'La variable a pour valeur 1'; } elseif ($variable == 2) { echo 'La variable a pour valeur 2'; } elseif ($variable == 3) { echo 'La variable a pour valeur 3'; } elseif ($variable == 4) { echo 'La variable a pour valeur 4'; } elseif ($variable == 5) { echo 'La variable a pour valeur 5'; } else { echo 'La variable n’appartient pas à l’intervalle [1,5]'; } ?> Le résultat obtenu sera : La variable a pour valeur 3 |
c- Conditions SWITCH
Le switch est une structure qui permet d’éviter la lourdeur de l’écriture de l’exemple 2. Elle permet en outre une meilleure lisibilité.
Syntaxe
<? switch ($variable) { case condition1: //Traitement de la condition 1 break; case condition2: //Traitement de la condition 2 break; …. case conditionN: //Traitement de la condition N break; default: //Traitement par défaut } ?> |
Exemple
<? $variable = 3; switch ($variable) { case 1: echo 'La variable a pour valeur 1'; break; case 2: echo 'La variable a pour valeur 2'; break; case 3: echo 'La variable a pour valeur 3'; break; case 4: echo 'La variable a pour valeur 4'; break; case 5: echo 'La variable a pour valeur 5'; break; default: echo 'La variable n’appartient pas à l’intervalle [1,5]'; } ?> Le résultat obtenu sera : La variable a pour valeur 3 |
d-Itération avec WHILE
Syntaxe
<?
While (condition)
{
//Traitements
}
?>
Exemple
<? $nbre_maximum = 6; $i = 0; //initialisation de l’indice d’incrémentation while ($i < $nbre_maximum) //condition { echo $i.’ est inférieur à '. $nbre_maximum.'<br>'; $i++; // $i++ est équivalent à ($i+1) } echo $i.’ est égal à '. $nbre_maximum; ?> Le résultat obtenu sera : 0 est inférieur à 6 1 est inférieur à 6 2 est inférieur à 6 3 est inférieur à 6 4 est inférieur à 6 5 est inférieur à 6 6 est égal à 6 |
e- Itération avec FOR
Syntaxe
<?
for($i=0; $i != condition ; $i++)
{
//Traitements réalisés
}
?>
Exemple
<? $nbre_maximum = 6; //----------DEBUT BOUCLE------------ for($i=0; $i != $nbre_maximum ; $i++) { echo $i.'est inférieur à '. $nbre_maximum.'<br>'; } //------------FIN BOUCLE------------ echo $i.’ est égal à '. $nbre_maximum; ?> Le résultat obtenu sera : 0 est inférieur à 6 1 est inférieur à 6 2 est inférieur à 6 3 est inférieur à 6 4 est inférieur à 6 5 est inférieur à 6 6 est égal à 6 |
PHP propose une palette approximative de 2000 fonctions prédéfinies. Toutefois il vous est possible de créer vos propres bibliothèques de fonctions pour vos usages spécifiques, une meilleure lisibilité du code et une réutilisation.
a- Définition des fonctions
Les fonctions peuvent se distinguer en deux sous groupes :
-les fonctions qui effectuent un traitement (affichage par exemple)
-les fonctions qui effectuent un traitement et retournent un résultat
Syntaxe
function nom_de_la_fonction ($paramètres) { //traitement sur les paramètres effectué } L’appel de la fonction se fait de la manière suivante : nom_de_la_fonction ($paramètres) ; |
Exemple
<? function afficher_nom_prenom ($nom,$prenom) { echo 'Bonjour '.$nom. ' '.$prenom ; } afficher_nom_prenom ('Tarak','Joulak') ; echo ' <br>' ; $nom1='Mourad' ; $prenom1='Zouari' ; afficher_nom_prenom ($nom1,$prenom1) ; ?> Le résultat obtenu sera : Bonjour Tarak Joulak Bonjour Mourad Zouari |
Dans le cas suivant un traitement est effectué à l’intérieur de la fonction puis retourné par cette dernière. De ce fait la fonction doit donc être affectée à une variable.
Syntaxe
function nom_de_la_fonction ($paramètres) { //traitement sur les paramètres effectué return ($resultat) ; } L’appel de la fonction se fait de la manière suivante : $variable = nom_de_la_fonction ($paramètres) ; |
Exemple
<? function additionner ($variable1,$variable2) { $total = $variable1 + $variable2; return ($total) ; } $resultat= additionner (1,2) ; echo $resultat.' <br>' ; $var1=6 ; $var2=7 ; $resultat= additionner ($var1,$var2) ; echo $resultat.' <br>' ; ?> Le résultat obtenu sera : 3 13 |
b-Librairie de fonctions
Idéalement toutes les fonctions créées devraient être regroupées dans un même fichier créant ainsi une bibliothèque de fonctions. Ce fichier sera appelé à l’intérieur des autres fichiers par le biais de la fonction include.
Exemple fichier
<? //Ce fichier contiendra l’ensemble des fonctions que vous développerez function additionner ($variable1,$variable2) { $total = $variable1 + $variable2; return ($total) ; } function afficher_nom_prenom ($nom,$prenom) { echo 'Bonjour '.$nom. ' '.$prenom ; } ?> |
Exemple fichier
<? Include (’’’’) ; $resultat= additionner (1,2) ; echo $resultat.' <br>' ; afficher_nom_prenom ('Tarak','Joulak') ; ?> Le résultat obtenu sera : 3 Bonjour Tarak Joulak |
a- Tableaux numérotés et tableaux associatifs
Il existe deux type de tableaux de variables sous PHP :
-Les tableaux à index numériques (tableaux numérotés) dans lesquels l’accès à la valeur de la variable passe par un index numérique ex : $tableau[0], $tableau[1], $tableau[2], …
-Les tableaux à index associatifs (ou tableaux associatifs) dans lesquels l’accès à la valeur de la variable passe par un index nominatif
ex : $tableau[nom], $tableau[prénom], $tableau[adresse], …
Syntaxe
//Tableau à index numéroté $tableau = array (valeur0,valeur1,valeur2, …) ; //Accès à chacune des valeurs $tableau[0] donnera valeur0 $tableau[1] donnera valeur1 … //Tableau à index associatif $tableau = array (variable1 => valeur1, variable2 => valeur2, …) ; //Accès à chacune des valeurs $tableau[variable1] donnera valeur1 $tableau[variable2] donnera valeur2 … |
Exemple
<? //Tableau à index numéroté $tableau1 = array ('château','maison','bateau') ; echo "Contenu du tableau 1 :<br>"; echo $tableau1[0]."<br>"; echo $tableau1[1]."<br>"; echo $tableau1[2]."<br>"; //Tableau à index associatif $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; echo "Contenu du tableau 2 :<br>"; echo $tableau2['prenom']."<br>"; echo $tableau2['nom']."<br>"; echo $tableau2['ville']."<br>"; ?> Le résultat obtenu sera : Contenu du tableau 1 : château maison bateau Contenu du tableau 2 : Tarak Joulak Tunis |
b- Parcours des tableaux PHP intègre une structure de langage qui permet de parcourir un à un les élément d’un tableau :
foreach().
Syntaxe
$tableau = array (valeur0,valeur1,valeur2, …) ;
foreach ( $tableau as $valeur )
{
//Appeller ici la valeur courante par $valeur
…}
Exemple
<? //Cas du tableau numéroté $tableau1 = array ('chateau','maison','bateau') ; foreach ( $tableau1 as $valeur ) { echo $valeur."<br>"; } ?> Le résultat obtenu sera : château maison bateau |
Exemple
<? //Cas du tableau associatif $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; foreach ( $tableau2 as $valeur ) { echo $valeur."<br>"; } ?> Le résultat obtenu sera : Tarak Joulak Tunis |
Dans l’exemple suivant et pour le cas des tableaux associatifs nous pouvons grâce à la boucle foreach() aussi bien énumérer le nom des variable que leur valeur.
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; foreach ( $tableau2 as $variable=>$valeur ) { echo $variable." a pour valeur ".$valeur."<br>"; } ?> Le résultat obtenu sera : prenom a pour valeur Tarak nom a pour valeur Joulak ville a pour valeur Tunis |
- array_key_exists() permet de vérifier si dans un tableau associatif une variable associative (clef) existe ou non. Elle retourne donc une valeur booléenne (True ou False).
Syntaxe
$resultat= array_key_exists('nom_de_la variable', tableau_associatif) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if (array_key_exists("nom", $tableau2)) { echo 'La variable "Nom" se trouve dans le tableau et a pour valeur: '.$tableau2['nom']; } else { echo 'La variable "Nom" ne se trouve pas dans le tableau'; } ?> Le résultat obtenu sera : La variable "Nom" se trouve dans le tableau et a pour valeur: Joulak |
- in_array() permet de déterminer si une valeur existe dans le tableau. Elle retourne donc une valeur booléenne (True ou False).
Syntaxe
$resultat=in_array ( nom_de_la_valeur, tableau) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if (in_array("Tarak", $tableau2)) { echo 'La valeur "Tarak" existe bien dans le tableau'; } else { echo 'La valeur "Tarak" ne se trouve pas dans le tableau'; } ?> Le résultat obtenu sera : La valeur "Tarak" existe bien dans le tableau |
-array_search fonctionne comme in_array : il travaille sur les valeurs d'un tableau.
Si il a trouvé la valeur, array_search renvoit la clé correspondante (c'est-à-dire le numéro si c'est un tableau numéroté, ou le nom de la variable si c'est un tableau associatif). Si il n'a pas trouvé la valeur, array_search renvoit false (comme in_array).
Syntaxe
$resultat=array_search ( nom_de_la_valeur, tableau) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if ($position = array_search("Tunis", $tableau2)) { echo '"Tunis" se trouve en position ' . $position . '<br />'; } else { echo '"Tunis" ne se trouve pas dans le tableau.'; } ?> Le résultat obtenu sera : "Tunis" se trouve en position ville |
PHP propose l’accès à toute une série de variables comme les en-têtes, dossiers et chemins des scripts, sans que vous ayez à les créer, on les appelle les variables serveur. Ces variables sont créées par le serveur web.
Le tableau $_SERVER permet d’accéder à ces variables. Si la directive register_globals de est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global c'est à dire séparément du tableau $_SERVER.
Description de certaines variables :
$_SERVER['SERVER_NAME'] Le nom du serveur hôte qui exécute le script
$_SERVER['PHP_SELF'] Le nom du fichier du script en cours d'exécution, par rapport à la racine web
$_SERVER['DOCUMENT_ROOT'] Racine du serveur
$_SERVER['REMOTE_ADDR'] Adresse IP du client
$_SERVER['QUERY_STRING'] Liste des paramètres passés au script
$_SERVER['REQUEST_METHOD'] Méthode d'appel du script
Exemple
<? echo 'PHP_SELF: '.$_SERVER['PHP_SELF']; echo "<br>"; echo 'SERVER_NAME: '.$_SERVER['SERVER_NAME']; echo "<br>"; echo 'DOCUMENT_ROOT: '.$_SERVER['DOCUMENT_ROOT']; echo "<br>"; echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR']; echo "<br>"; echo 'QUERY_STRING: '.$_SERVER['QUERY_STRING']; echo "<br>"; echo 'REQUEST_METHOD: '.$_SERVER['REQUEST_METHOD']; echo "<br>"; ?> Le résultat obtenu sera : PHP_SELF: SERVER_NAME: localhost DOCUMENT_ROOT: c:/program files/easyphp1-8/www REMOTE_ADDR: 127.0.0.1 QUERY_STRING: REQUEST_METHOD: GET |
La fonction PHP permettant d’éditer l’intégralité des variables prédéfinies disponibles est phpinfo()
<?
phpinfo() ;
?>
1- Ouverture / fermeture de fichier
Avant toute opération de lecture ou écriture sur un fichier il y a nécessité de l’ouvrir. Et à la fin de tout traitement d’un fichier il y a nécessité de le fermer.
Syntaxe
<? // Ouverture de fichier $monfichier = fopen("nom_du_fichier", "r+"); // Traitements sur le fichier // ….. // Fermeture du fichier fclose($monfichier); ?> |
Fopen() prend en entrée :
-le nom du fichier (ou meme une url)
-le mode d’ouverture du fichier Il retourne un handle.
Fclose() prend en entrée le handle envoyé par le fopen.
Les modes d’ouverture d’un fichier sont les suivants :
'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
Exemple
<?
$handle = fopen(";, "r");
$handle = fopen("", "r+");
?>
2- Lecture de fichier
string fgets ( resource handle , int length )
fgets retourne la chaîne lue jusqu'à la longueur length - 1 octet depuis le pointeur de fichier handle , ou bien la fin du fichier, ou une nouvelle ligne (qui inclue la valeur retournée), ou encore un EOF (celui qui arrive en premier). Si aucune longueur n'est fournie, la longueur par défaut est de 1 ko ou 1024 octets.
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fgets ($monfichier, $taille) ;
fclose($monfichier);
?>
La fonction prend en paramètre :
- le handle retourné par la fonction fopen()
- la taille en octets de lecture (optionnel) Elle retourne en sortie une chaîne de caractères.
Exemple :
L’exemple suivant va permettre de lire dans un fichier texte () ligne par ligne puis d’afficher le résultat à l’écran en mettant un numéro à chaque ligne.
Fichier
Tarak Joulak
Guest0
abc123
Fichier
<? $i=0; $fichier = ''; $fp = fopen($fichier,'r'); //ouverture du fichier en lecture seulement while (!feof($fp)) // tant qu’on n’est pas a la fin du fichier { $ligne = fgets($fp); //Lecture ligne par ligne echo 'Ligne '.$i++.'--->'.$ligne.'<br>'; } fclose($fp); ?> Le résultat obtenu sera : Ligne 1 ---> Tarak Joulak Ligne 2 ---> Guest0 Ligne 3 ---> abc123 |
string fread ( resource handle , int length )
Une autre manière de faire de la lecture dans un fichier est d’utiliser fread()
fread lit jusqu'à length octets dans le fichier référencé par handle . La lecture s'arrête lorsque length octets ont été lus, ou que l'on a atteint la fin du fichier, ou qu'une erreur survient (le premier des trois).
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fread ($monfichier, $taille) ;
fclose($monfichier);
?>
Exemple Fichier
<?
// Lit un fichier, et le place dans une chaîne
$filename = "";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename)); echo "-->".$contents;
fclose ($handle);
?>
Le résultat obtenu sera :
--> Tarak Joulak Guest0 abc123
array file (string filename)
Encore une autre manière de lire dans un fichier est d’utiliser la fonction file()
Identique à readfile, hormis le fait que file retourne le fichier dans un tableau. Chaque élément du tableau correspondant à une ligne du fichier, et les retour?chariots sont placés en fin de ligne.
Syntaxe
<?
file ($nom_de_fichier)
?>
Rq : la fonction file() ne nécessite pas l’usage de open() et close().
Exemple Fichier
<?php
$filename = "";
$fcontents = file($filename);
echo $fcontents[0]."<br>";
echo $fcontents[1]."<br>";
?>
Le résultat obtenu sera :
Tarak Joulak
Guest0
3- Ecriture dans fichier
La fonction pour l’écriture dans un fichier est fputs()
int fputs ( int handle , string string , int length )
fputs écrit le contenu de la chaîne string dans le fichier pointé par handle . Si la longueur length est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne (le premier des deux). fwrite retourne le nombre d'octets écrits ou FALSE en cas d'erreur.
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fputs ($monfichier, "Texte à écrire");
fclose ($monfichier);
?> Exemple
Exemple
<? $filename = ""; $monfichier = fopen ($filename, "a+"); $contenu="ceci est le texte a ecrire \r\n"; fputs($monfichier, $contenu); fclose ($monfichier); ?> Le résultat obtenu sera : Le fichier aura une ligne supplémentaire contenant « ceci est le texte à écrire » |
4- Fonctions diverses de traitement de fichier :
-feof ($handle) fonction qui retourne un booleen pour indiquer la fin du fichier parcouru. Elle prend en entrée le handle retourné par la fonction fopen().
-filesize ($nom_du_fichier) fonction qui retourne la taille du fichier en octets.
-file_exists ($nom_du_fichier ) fonction qui retourne un booleen indiquant si le fichier existe ou non.
Quand dans un site web un formulaire est rempli et envoyé, le contenu des champs saisis est transféré à la page destination sous forme de variables. Ce passage de variables ou de paramètres peut se faire de deux manières : en GET ou en POST.
Syntaxe
<html> <body> <!—Envoi d’un formulaire en POST --> <form method="post" action=""> <input type="text" name="nom" size="12"><br> <input type="submit" value="OK"> </form> <!—Envoi d’un formulaire en GET --> <form method="get" action=" "> … </form> </body> </html> |
En GET les paramètres apparaissent associés à l’url sous formes de variables séparées par des & (?nom=Tarak&prenom=Joulak). En POST le passage de paramètre se fait de manière invisible.
Selon que la méthode d’envoi a été du GET ou du POST la récupération du contenu des variables est faite selon une syntaxe différente :
Syntaxe
<? //Dans le cas d’un envoi des paramètres en POST $variable1=$_POST['nom_du_champ'] ; //Dans le cas d’un envoi des paramètres en GET $variable1=$_GET['nom_du_champ'] ; ?> |
Exemple 1 :
Dans l’exemple suivant le fichier contient le script html permettant d’afficher un formulaire et d’envoyer les résultats de la saisie à la page qui elle les affichera.
Fichier
<html> <body> <form method="post" action=""> Nom : <input type="text" name="nom" size="12"><br> Prénom : <input type="text" name="prenom" size="12"> <input type="submit" value="OK"> </form> </body> </html> |
Fichier
<?
//Récupération des paramètres passés
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
//affichage des paramètres
echo "<center>Bonjour $prenom $nom</center>";
?>
En exécutant à travers le serveur web le fichier , en remplissant le formulaire et en cliquant sur OK, nous sommes emmenés vers la page qui nous affiche une phrase composée des champs saisis dans le formulaire. Les champs saisis sont donc passé de vers .
Exemple 2 :
L’exemple précédent peut tenir dans un seul fichier qui s’enverrait à lui même les paramètres
Fichier
<? if ($_POST['submit'] == "OK") { //Le formulaire a été transmis //Récupération des paramètres passés $prenom = $_POST['prenom']; $nom = $_POST['nom']; //affichage des paramètres echo "<center>Bonjour $prenom $nom</center>"; } else { ?> <!-- Affichage du formulaire de saisie --> <form method="post" action=""> Nom : <input type="text" name="nom" size="12"><br> Prénom : <input type="text" name="prenom" size="12"> <input type="submit" name="submit" value="OK"> </form> <? } ?> |
Remarque :
La définition de la destination du formulaire (action="") aurait pu ne pas être nominative mais exploiter une variable serveur PHP_SELF puisque les paramètres sont envoyées à la page elle même. Ainsi $_SERVER['PHP_SELF'] retournera naturellement . Cela donnera donc :
<form method=&qu
Rencontre des réseaux du projet Noria
Formateur
KEBIR Mohamed Ines
1- Qu'est-ce que PHP ? 3
2- Fonctionnement. 3
3- Langages concurrents pour la génération des sites dynamiques 3
4- Avantages, limitations. 4
II-Mise en œuvre et déploiement
1- EasyPHP. 5
2- Configuration et paramétrage (). 6
3- Présentation des options les plus courantes. 7
III-Les fonctionnalités du langage
1- Premiers éléments du langage. 8
2- Intégration de PHP dans une page HTML. 8
3- Variables, chaînes et concaténation 9
4- Conditions et boucles 11
5- Fonctions 15
6- Tableaux 18
7- Variables serveur 22
IV- Accès fichiers
1- Ouverture / fermeture de fichier 23
2- Lecture de fichier 23
3- Ecriture dans fichier 25
4- Fonctions diverses 26
V- Passage et transmission de variables
1- Par formulaire 27
2- Par hyperlien 29
3- Redirection 30
VI- Variables persistantes
1- Les cookies 31
2- Les sessions 33
VIII- Utilisation d'une base de données MySql
1- Introduction 35
2- Concepts fondamentaux : Bases, tables, champs, enregistrements. 35
3- Administration de MYSQL 36
4- SQL : petit récapitulatif du langage 36
5- Accéder à MYSQL via PHP. 37
IX- L'évolution de PHP en PHP5 38
X- Webographie 38
1- Qu'est-ce que PHP ?
PHP (officiellement "PHP: Hypertext Preprocessor") 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. On désigne parfois PHP comme une plate-forme plus qu'un simple langage.
Sa syntaxe et sa construction ressemblent à celles des langages C++ et Perl, à la différence que le PHP peut être directement intégré dans du code HTML.
Exemple
<html>
<head>
<title>Exemple</title>
</head>
<body>
<?
echo "Bonjour, je suis un script PHP!";
?>
</body>
</html>
L'objet de ce langage est de permettre aux développeurs web d'écrire des pages dynamiques rapidement.
2- Fonctionnement :
PHP n'est pas un langage compilé, c'est un langage interprété par le serveur : le serveur lit le code PHP, le transforme et génère la page HTML. Pour fonctionner, il a donc besoin d'un serveur web. De ce fait une plateforme minimale de base pour l’exécution d’un site web développé en PHP comprend :
-l’interpréteur PHP (serveur PHP)
-un serveur web (Apache, IIS, …)
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).
De ce fait le code PHP n’est jamais visible sur la page finale consultée par le client. Ainsi en éditant le source de la page on n’y trouvera que du code HTML.
3- Langages concurrents pour la génération des sites dynamiques.
JSP, ASP, PYTHON, Perl, coldfusion, CGI
4- Avantages, limitations.
Le langage PHP possède les même fonctionnalités que les autres langages permettant d'écrire des scripts CGI, comme collecter des données, générer dynamiquement des pages web ou bien envoyer et recevoir des cookies, … .
- La plus grande qualité et le plus important avantage du langage PHP est le support d'un grand nombre de bases de données et la simplicité d’interfaçage avec eux.
- PHP est utilisable sur la majorité des systèmes d'exploitation, comme Linux, de nombreuses variantes Unix (incluant HP-UX, Solaris et OpenBSD), Microsoft Windows, Mac OS X, RISC OS et d'autres encore.
- PHP supporte aussi la plupart des serveurs web actuels : Apache, Microsoft Internet Information Server, Personal Web Server, Netscape et iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd et beaucoup d'autres encore.
- La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL) - La simplicité d'écriture de scripts (apprentissage rapide);
Limitations :
- Langage interprété
- L’orienté objet reste limité
- Pas adéquat en terme de rapidité et de maintenabilité pour des projet de grandes envergures
EasyPHP est un paquetage contenant à la fois Apache, PHP et MySQL
EasyPHP permet d’installer automatiquement et facilement une plateforme permettant l’exploitation d’un site web en PHP qui éventuellement aurait besoin d’un accès a une base de données. De la sorte on se libère des complications d’une installation manuelle de chacune de composantes séparément.
Procédure d’installation :
• Télécharger EasyPHP sur le site
• Double cliquer sur l'exécutable téléchargé
• Sélectionner le répertoire d'installation et suivre la procédure
Procédure de lancement :
• Fichier Log : renvoie aux erreurs générées par Apache et MySQL
• Configuration : donne accès aux différentes configurations d'EasyPHP
• Administration : gestion des répertoires virtuels, des extensions, de PHPMyadmin
• Web local : ouvre la page http://localhost/ répertoire racine du site
• Démarrer/Arrêter : démarre/arrête Apache et MySQL
• Quitter : ferme EasyPHP
Pour que vos pages PHP soient interprétées, il est impératif de placer vos fichiers dans le répertoire www (sus le répertoire d’installation de easyphp). Ce répertoire est configuré par défaut comme répertoire racine de votre serveur web. Le serveur Apache est configuré pour ouvrir automatiquement un fichier index lorsque vous saisissez l'adresse 'http://localhost/' (à condition évidemment que le serveur Apache soit en route). Cette page sert de page d'accueil au web local et permet de vérifier le bon fonctionnement d'EasyPHP.
Il est conseillé de créer un répertoire par projet dans le répertoire www afin d'avoir une vision plus claire des développements.
Il est en outre possible de créer des répertoires virtuels. Ces répertoires virtuels peuvent être créé physiquement n’importe ou sur votre disque dur. Il suffira de leur associer un nom virtuel avec lequel le serveur apache le reconnaîtra.
Lors de l’installation de PHP, un fichier de configuration nommé « » sera créé sur votre système. Le fichier est le fichier de configuration de serveur PHP. Ce fichier respecte la structure des fichiers INI bien connus de nombreuses applications Windows. Il s'agit d'un fichier texte ASCII divisé en plusieurs sections, chacune portant un nom et contenant des variables relatives à la section concernée.
Chaque section ressemble au fragment suivant :
[MaSection] variable="valeur" autrevariable="autrevaleur"
Les lignes en commentaires commencent par un « ; »
Toute modification du fichier nécessite un redémarrage du serveur afin que la nouvelle configuration soit prise en compte.
Par défaut le fichier est configuré de sorte à être fonctionnel. Intervenir sur ce fichier peut être intéressant pour rajouter de nouveaux modules ou pour affiner certains paramètres de sécurité mais doit systématiquement faire l’objet d’un backup de sécurité au préalable.
Quelques exemples de paramétrage :
Les erreurs PHP se répartissent en quatre catégories: erreurs du parseur, notifications de bugs dans le code (par exemple, des variables non initialisées), avertissements (erreurs non fatales) et erreurs fatales. Normalement, lorsque PHP détecte une erreur de parseur, non fatale ou fatale, il affiche l'erreur et, si elle est fatale, il arrête également de traiter le script à ce stade. Vous pouvez modifier ce comportement à l'aide de la variable error_reporting, qui accepte un champ binaire des codes d'erreurs et n'affiche que les erreurs correspondant à ces codes:
La configuration suivante par exemple permet l’affichage de tout type d’erreur. error_reporting = E_ALL
Pour désactiver l'affichage des erreurs (recommandé en production), désactivez la variable display_errors et inscrivez plutôt les messages dans un journal des erreurs à l'aide de la variable log_errors.
Cette technique est également efficace pour des raisons de sécurité: en désactivant les erreurs, vous masquez des informations spécifiques du système que des utilisateurs peu scrupuleux pourraient exploiter pour essayer de nuire à votre site ou votre application. Définissez donc l'écriture de ces erreurs dans un fichier journal personnalisé ou dans le journal système, en paramétrant la variable error_log sur le nom d'un fichier .
display_errors = Off log_errors = On
error_log = ""
- upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
- upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
- post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize.
- register_globals = Off [sécurité, performance]
Depuis la version 4.2.0 de PHP, la valeur par défaut de register_global est à Off dans le . Dorénavant une variable envoyée par un formulaire (méthode POST) n'est plus récupérée avec $variable mais avec $_POST["variable"]. Toutes les variables globales sont concernées (POST, GET, cookies, environnement et autres variables serveur : $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, $_SESSION). Ceci peut nécessiter la réécriture partielle de certains scripts.
Rq : il est vivement conseillé d'utiliser cette configuration qui est celle adoptée par défaut depuis PHP 4.2.0 et de coder vos scripts en conséquence. Cependant si vous souhaitez utiliser d'anciens scripts sans avoir à les réécrire, vous avez toujours la possibilité de remettre dans le fichier register_global à On.
3- Présentation des options les plus courantes.
Le Menu de EASYPHP offre les fonctionnalités suivantes :
• Fichier Log
Ce menu permet de visualiser l’ensemble des fichier logs que Apache et MYSQL génèrent. PHP ne générant pas de fichier log puisqu’il ne fonctionne qu’au travers d’Apache.
• Configuration
Ce menu donne accès aux fichiers de configurations suivants :
-Apache :
-Extension PHP :
-PHP :
-MYSQL :
-PHPMyadmin
• Administration
-Il permettra en outre d’accéder à PHPMyadmin afin de gérer vos bases de données.
• Web local
• Démarrer/Arrêter
• Quitter
1- Premiers éléments du langage.
Lorsque vous créez un code, il doit être placé entre balises php pour que celui- ci soit interprété, comme ceci:
<? echo 'bonjour'; ?>ou encore <?PHP echo 'bonjour'; ?> Ce qui affichera à l'écran ‘ bonjour ’. |
Une syntaxe PHP se termine TOUJOURS par un point-virgule, si vous l'oubliez vous verrez apparaître une PARSE ERROR lors de l'exécution de votre fichier.
Les commentaires peuvent se présenter sous deux formes :
<?
//ceci est
// un commentaire
/* ceci est
un commentaire */
?>
2- Intégration de PHP dans une page HTML.
a- Généralités
L'un des avantages du PHP est qu'il s'intègre facilement dans du code HTML classique. Chacun peut à sa guise inclure quelques parties en PHP dans des parties de code HTML.
Remarque importante :
Du moment que des parties de code PHP ont été intégrées dans une page HTML cette dernière doit impérativement être renommée en extension .php
Exemple
<html> <body> <font size="2" face="Arial">Le texte en HTML</font> <br> <? echo"<font size=\"2\" face=\"Arial\"> Le texte est en PHP.</font>"; ?> <br> <font size="2" face="Arial"> < ? echo ‘Encore du texte en PHP’ ?></font> </body> </html> Le résultat obtenu sera : Le texte est en HTML Le texte est en PHP Encore du texte en PHP |
b-La fonction include()
Syntaxe
<?
Include ("nom_du_fichier_a_inclure") ;
?>
Dans l’exemple suivant un fichier contiendra le code HTML nécessaire à la génération d’un menu en HTML.
Un second fichier inclura ce fichier .
Exemple fichier
<a href= "" > Menu1 </a><br>
<a href="/" > Menu2 </a><br>
<a href="/" > Menu3 </a><br>
Fichier
<html> <body> <? Include ("") ; / /inclusion du fichier contenant le menu ?> </body> </html> Le résultat obtenu sera : Menu1 Menu2 Menu3 |
Remarque : Il ne faut exécuter que le fichier .
Ainsi toutes les pages du site sensées contenir ce menu intègreront grâce à la fonction include() le fichier .
Il suffira de changer le fichier afin que toutes les pages qui l’intègrent se trouvent automatiquement changées.
Une variable est définie sous la forme $variable_nom.
L’affectation d’une variable se fait de la manière suivante : $variable_nom = variable_valeur. L’appel de la valeur affectée à une variable se fait par son nom.
Syntaxe
<? $variable1 = 'Bonjour 1'; | //Affectation d’une chaîne avec quote simple |
$variable2 = ’’Bonjour 2’’; $variable3 = 5; $variable4 = 2 + (3 * 5); $variable5 = true; ?> | // Affectation d’une chaîne avec quote double // Affectation d’un entier // Affectation d’un résultat d’opération // Affectation Booléenne |
L’affichage des variables combinées à des chaînes de caractères peut se faire de plusieurs manières en utilisant les cotes simples (' ) ou les doubles cotes ('' ).
<? $nom = 'visiteur'; echo "bonjour $nom"; ?> Le résultat obtenu sera : bonjour visiteur |
<? $nom = 'visiteur'; echo 'bonjour '.$nom; ?> bonjour visiteur |
Remarque : Il y'a un . entre le ' et la variable $nom. Le point est un opérateur de concaténation pour les chaînes de caractères.
<? $nom = 'visiteur'; echo 'bonjour $nom'; // La variable $nom ne sera pas interprétée ?> Le résultat obtenu sera : bonjour $nom |
Remarques :
Si vous utilisez les ' au lieu des " , la variable n'est pas interprétée comme une variable mais comme une chaîne de caractère.
Remarque sur l’usage des cotes simples ou doubles
Lors de l’usage des ' pour l’affichage d’une chaîne de caractère contenant des apostrophes, vous devez impérativement faire précéder ces apostrophes d'antislash. De la sorte l’apostrophe ne sera pas confondue avec le caractère de fin de la chaîne à afficher. Dans le cas contraire un message d’erreur sera affiché.
<? echo 'vous n\'êtes pas inscrit'; ?> Le résultat obtenu sera : Vous n’êtes pas inscrit |
Il en va de même lors de l’usage de ’’ pour l’affichage d’une chaîne de caractère contenant au préalable des doubles cotes.
<? echo"<a href=\"http://www-etu\"></a>"; ?> Le résultat obtenu sera : |
4- Conditions et boucles.
a- Conditions if
La syntaxe de base d’une instruction conditionnelle est la suivante :
<? if($var == ’condition’) { // ’condition vérifiée’; } else { //’condition non vérifiée’; } ?> |
Les opérateurs de contrôle sont les suivants :
== | strictement égal | |
!= | différent | |
> | plus grand que | |
< | inférieur à | |
>= | supérieur à | |
<= | inférieur à | |
&& | et | |
|| | ou | |
AND | et | |
OR | ou | |
TRUE | 1 ou oui | |
FALSE | 0 ou non |
Exemple
<? $montant='100'; if ($montant <1000) { echo 'Montant inférieur à 1000'; } else { ?> Le résultat obtenu sera : Montant inférieur à 1000 |
b-Conditions elseif
<? If ($var == ’condition1’) { // ’condition1 vérifiée’; } elseif ($var == ’condition2’) { // ’condition2 vérifiée’; } … elseif ($var == ’conditionN) { // ’conditionN vérifiée’; } … else { echo ’Aucune condition n’est vérifiée’; } ?> |
Les structures elseif pouvant se répéter autant de fois que des conditions prévues l’exigeront.
Exemple 1
<? $montant='100' ; if ($montant >=0 && $montant<1000) { echo ' Votre montant '. $montant. ' est compris entre 0 et 1000'; } elseif ($montant >=1000 && $montant<5000) { echo ' Votre montant '. $montant. ' est compris entre 1000 et 5000'; } else { echo ' Votre montant '.$montant. ' est supérieur à 5000'; } ?> Le résultat obtenu sera : Votre montant 100 est compris entre 0 et 1000 |
Exemple 2
<? $variable = 3; // serie de tests if ($variable == 1) { echo 'La variable a pour valeur 1'; } elseif ($variable == 2) { echo 'La variable a pour valeur 2'; } elseif ($variable == 3) { echo 'La variable a pour valeur 3'; } elseif ($variable == 4) { echo 'La variable a pour valeur 4'; } elseif ($variable == 5) { echo 'La variable a pour valeur 5'; } else { echo 'La variable n’appartient pas à l’intervalle [1,5]'; } ?> Le résultat obtenu sera : La variable a pour valeur 3 |
c- Conditions SWITCH
Le switch est une structure qui permet d’éviter la lourdeur de l’écriture de l’exemple 2. Elle permet en outre une meilleure lisibilité.
Syntaxe
<? switch ($variable) { case condition1: //Traitement de la condition 2 break; …. case conditionN: //Traitement de la condition N break; default: //Traitement par défaut } ?> |
Exemple
<? $variable = 3; switch ($variable) { case 1: echo 'La variable a pour valeur 1'; break; case 2: echo 'La variable a pour valeur 2'; break; case 3: echo 'La variable a pour valeur 3'; break; case 4: echo 'La variable a pour valeur 4'; break; case 5: echo 'La variable a pour valeur 5'; break; default: echo 'La variable n’appartient pas à l’intervalle [1,5]'; } ?> Le résultat obtenu sera : La variable a pour valeur 3 |
d-Itération avec WHILE
Syntaxe
<?
While (condition)
{
//Traitements
}
?>
Exemple
<? $nbre_maximum = 6; $i = 0; //initialisation de l’indice d’incrémentation while ($i < $nbre_maximum) //condition { echo $i.’ est inférieur à '. $nbre_maximum.'<br>'; $i++; // $i++ est équivalent à ($i+1) } echo $i.’ est égal à '. $nbre_maximum; ?> Le résultat obtenu sera : 0 est inférieur à 6 1 est inférieur à 6 2 est inférieur à 6 3 est inférieur à 6 4 est inférieur à 6 5 est inférieur à 6 6 est égal à 6 |
e- Itération avec FOR
Syntaxe
<?
for($i=0; $i != condition ; $i++)
{
//Traitements réalisés
}
Exemple
<? $nbre_maximum = 6; //----------DEBUT BOUCLE------------ for($i=0; $i != $nbre_maximum ; $i++) { echo $i.'est inférieur à '. $nbre_maximum.'<br>'; } //------------FIN BOUCLE------------ echo $i.’ est égal à '. $nbre_maximum; ?> Le résultat obtenu sera : 0 est inférieur à 6 1 est inférieur à 6 2 est inférieur à 6 3 est inférieur à 6 4 est inférieur à 6 5 est inférieur à 6 6 est égal à 6 |
PHP propose une palette approximative de 2000 fonctions prédéfinies. Toutefois il vous est possible de créer vos propres bibliothèques de fonctions pour vos usages spécifiques, une meilleure lisibilité du code et une réutilisation.
a- Définition des fonctions
Les fonctions peuvent se distinguer en deux sous groupes :
-les fonctions qui effectuent un traitement (affichage par exemple)
-les fonctions qui effectuent un traitement et retournent un résultat
Syntaxe
function nom_de_la_fonction ($paramètres) { //traitement sur les paramètres effectué } L’appel de la fonction se fait de la manière suivante : nom_de_la_fonction ($paramètres) ; |
Exemple
<? function afficher_nom_prenom ($nom,$prenom) { echo 'Bonjour '.$nom. ' '.$prenom ; } afficher_nom_prenom ('Tarak','Joulak') ; echo ' <br>' ; $nom1='Mourad' ; $prenom1='Zouari' ; afficher_nom_prenom ($nom1,$prenom1) ; ?> Le résultat obtenu sera : Bonjour Tarak Joulak Bonjour Mourad Zouari |
Dans le cas suivant un traitement est effectué à l’intérieur de la fonction puis retourné par cette dernière. De ce fait la fonction doit donc être affectée à une variable.
Syntaxe
function nom_de_la_fonction ($paramètres) { //traitement sur les paramètres effectué return ($resultat) ; } L’appel de la fonction se fait de la manière suivante : |
Exemple
<? function additionner ($variable1,$variable2) { $total = $variable1 + $variable2; return ($total) ; } $resultat= additionner (1,2) ; echo $resultat.' <br>' ; $var1=6 ; $var2=7 ; $resultat= additionner ($var1,$var2) ; echo $resultat.' <br>' ; ?> Le résultat obtenu sera : 3 13 |
b-Librairie de fonctions
Idéalement toutes les fonctions créées devraient être regroupées dans un même fichier créant ainsi une bibliothèque de fonctions. Ce fichier sera appelé à l’intérieur des autres fichiers par le biais de la fonction include.
Exemple fichier
<? //Ce fichier contiendra l’ensemble des fonctions que vous développerez function additionner ($variable1,$variable2) { $total = $variable1 + $variable2; return ($total) ; } function afficher_nom_prenom ($nom,$prenom) { echo 'Bonjour '.$nom. ' '.$prenom ; } ?> |
Exemple fichier
<? Include (’’’’) ; $resultat= additionner (1,2) ; echo $resultat.' <br>' ; afficher_nom_prenom ('Tarak','Joulak') ; ?> Le résultat obtenu sera : 3 Bonjour Tarak Joulak |
a- Tableaux numérotés et tableaux associatifs
Il existe deux type de tableaux de variables sous PHP :
-Les tableaux à index numériques (tableaux numérotés) dans lesquels l’accès à la valeur de la variable passe par un index numérique ex : $tableau[0], $tableau[1], $tableau[2], …
-Les tableaux à index associatifs (ou tableaux associatifs) dans lesquels l’accès à la valeur de la variable passe par un index nominatif
ex : $tableau[nom], $tableau[prénom], $tableau[adresse], …
Syntaxe
//Tableau à index numéroté $tableau = array (valeur0,valeur1,valeur2, …) ; //Accès à chacune des valeurs $tableau[0] donnera valeur0 $tableau[1] donnera valeur1 … //Tableau à index associatif //Accès à chacune des valeurs $tableau[variable1] donnera valeur1 $tableau[variable2] donnera valeur2 … |
Exemple
<? //Tableau à index numéroté $tableau1 = array ('château','maison','bateau') ; echo "Contenu du tableau 1 :<br>"; echo $tableau1[0]."<br>"; echo $tableau1[1]."<br>"; echo $tableau1[2]."<br>"; //Tableau à index associatif $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; echo "Contenu du tableau 2 :<br>"; echo $tableau2['prenom']."<br>"; echo $tableau2['nom']."<br>"; echo $tableau2['ville']."<br>"; ?> Le résultat obtenu sera : Contenu du tableau 1 : château maison bateau Contenu du tableau 2 : Tarak Joulak Tunis |
b- Parcours des tableaux PHP intègre une structure de langage qui permet de parcourir un à un les élément d’un tableau :
foreach().
Syntaxe
$tableau = array (valeur0,valeur1,valeur2, …) ;
foreach ( $tableau as $valeur )
{
//Appeller ici la valeur courante par $valeur
…}
Exemple
<? //Cas du tableau numéroté $tableau1 = array ('chateau','maison','bateau') ; foreach ( $tableau1 as $valeur ) { echo $valeur."<br>"; } ?> Le résultat obtenu sera : château maison bateau |
Exemple
<? //Cas du tableau associatif $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; foreach ( $tableau2 as $valeur ) { echo $valeur."<br>"; } ?> Le résultat obtenu sera : Tarak Joulak Tunis |
Dans l’exemple suivant et pour le cas des tableaux associatifs nous pouvons grâce à la boucle foreach() aussi bien énumérer le nom des variable que leur valeur.
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; foreach ( $tableau2 as $variable=>$valeur ) { ?> Le résultat obtenu sera : prenom a pour valeur Tarak nom a pour valeur Joulak ville a pour valeur Tunis |
- array_key_exists() permet de vérifier si dans un tableau associatif une variable associative (clef) existe ou non. Elle retourne donc une valeur booléenne (True ou False).
Syntaxe
$resultat= array_key_exists('nom_de_la variable', tableau_associatif) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if (array_key_exists("nom", $tableau2)) { echo 'La variable "Nom" se trouve dans le tableau et a pour valeur: '.$tableau2['nom']; } else { echo 'La variable "Nom" ne se trouve pas dans le tableau'; } ?> Le résultat obtenu sera : La variable "Nom" se trouve dans le tableau et a pour valeur: Joulak |
- in_array() permet de déterminer si une valeur existe dans le tableau. Elle retourne donc une valeur booléenne (True ou False).
Syntaxe
$resultat=in_array ( nom_de_la_valeur, tableau) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if (in_array("Tarak", $tableau2)) { echo 'La valeur "Tarak" existe bien dans le tableau'; } else { echo 'La valeur "Tarak" ne se trouve pas dans le tableau'; } ?> Le résultat obtenu sera : La valeur "Tarak" existe bien dans le tableau |
-array_search fonctionne comme in_array : il travaille sur les valeurs d'un tableau.
Syntaxe
$resultat=array_search ( nom_de_la_valeur, tableau) ;
Exemple
<? $tableau2 = array ('prenom' =>'Tarak','nom' =>'Joulak','ville' =>'Tunis') ; if ($position = array_search("Tunis", $tableau2)) { echo '"Tunis" se trouve en position ' . $position . '<br />'; } else { echo '"Tunis" ne se trouve pas dans le tableau.'; } ?> Le résultat obtenu sera : "Tunis" se trouve en position ville |
PHP propose l’accès à toute une série de variables comme les en-têtes, dossiers et chemins des scripts, sans que vous ayez à les créer, on les appelle les variables serveur. Ces variables sont créées par le serveur web.
Le tableau $_SERVER permet d’accéder à ces variables. Si la directive register_globals de est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global c'est à dire séparément du tableau $_SERVER.
Description de certaines variables :
$_SERVER['SERVER_NAME'] Le nom du serveur hôte qui exécute le script
$_SERVER['PHP_SELF'] Le nom du fichier du script en cours d'exécution, par rapport à la racine web
$_SERVER['DOCUMENT_ROOT'] Racine du serveur
$_SERVER['REMOTE_ADDR'] Adresse IP du client
$_SERVER['QUERY_STRING'] Liste des paramètres passés au script
$_SERVER['REQUEST_METHOD'] Méthode d'appel du script
Exemple
<? echo 'PHP_SELF: '.$_SERVER['PHP_SELF']; echo "<br>"; echo 'SERVER_NAME: '.$_SERVER['SERVER_NAME']; echo "<br>"; echo 'DOCUMENT_ROOT: '.$_SERVER['DOCUMENT_ROOT']; echo "<br>"; echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR']; echo "<br>"; echo 'QUERY_STRING: '.$_SERVER['QUERY_STRING']; echo "<br>"; echo 'REQUEST_METHOD: '.$_SERVER['REQUEST_METHOD']; echo "<br>"; ?> Le résultat obtenu sera : SERVER_NAME: localhost DOCUMENT_ROOT: c:/program files/easyphp1-8/www REMOTE_ADDR: 127.0.0.1 QUERY_STRING: REQUEST_METHOD: GET |
La fonction PHP permettant d’éditer l’intégralité des variables prédéfinies disponibles est phpinfo()
<?
phpinfo() ;
?>
1- Ouverture / fermeture de fichier
Avant toute opération de lecture ou écriture sur un fichier il y a nécessité de l’ouvrir. Et à la fin de tout traitement d’un fichier il y a nécessité de le fermer.
Syntaxe
<? // Ouverture de fichier $monfichier = fopen("nom_du_fichier", "r+"); // Traitements sur le fichier // ….. // Fermeture du fichier fclose($monfichier); ?> |
Fopen() prend en entrée :
-le nom du fichier (ou meme une url)
-le mode d’ouverture du fichier Il retourne un handle.
Fclose() prend en entrée le handle envoyé par le fopen.
Les modes d’ouverture d’un fichier sont les suivants :
'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
Exemple
<?
$handle = fopen(";, "r");
$handle = fopen("", "r+");
?>
2- Lecture de fichier
string fgets ( resource handle , int length )
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fgets ($monfichier, $taille) ;
fclose($monfichier);
?>
La fonction prend en paramètre :
- le handle retourné par la fonction fopen()
- la taille en octets de lecture (optionnel) Elle retourne en sortie une chaîne de caractères.
Exemple :
L’exemple suivant va permettre de lire dans un fichier texte () ligne par ligne puis d’afficher le résultat à l’écran en mettant un numéro à chaque ligne.
Fichier
Tarak Joulak
Guest0
abc123
Fichier
<? $i=0; $fichier = ''; $fp = fopen($fichier,'r'); //ouverture du fichier en lecture seulement while (!feof($fp)) // tant qu’on n’est pas a la fin du fichier { $ligne = fgets($fp); //Lecture ligne par ligne echo 'Ligne '.$i++.'--->'.$ligne.'<br>'; } fclose($fp); ?> Le résultat obtenu sera : Ligne 1 ---> Tarak Joulak Ligne 2 ---> Guest0 Ligne 3 ---> abc123 |
string fread ( resource handle , int length )
Une autre manière de faire de la lecture dans un fichier est d’utiliser fread()
fread lit jusqu'à length octets dans le fichier référencé par handle . La lecture s'arrête lorsque length octets ont été lus, ou que l'on a atteint la fin du fichier, ou qu'une erreur survient (le premier des trois).
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fread ($monfichier, $taille) ;
fclose($monfichier);
?>
Exemple Fichier
<?
// Lit un fichier, et le place dans une chaîne
$filename = "";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename)); echo "-->".$contents;
fclose ($handle);
Le résultat obtenu sera :
--> Tarak Joulak Guest0 abc123
array file (string filename)
Encore une autre manière de lire dans un fichier est d’utiliser la fonction file()
Identique à readfile, hormis le fait que file retourne le fichier dans un tableau. Chaque élément du tableau correspondant à une ligne du fichier, et les retour?chariots sont placés en fin de ligne.
Syntaxe
<?
file ($nom_de_fichier)
?>
Rq : la fonction file() ne nécessite pas l’usage de open() et close().
Exemple Fichier
<?php
$filename = "";
$fcontents = file($filename);
echo $fcontents[0]."<br>";
echo $fcontents[1]."<br>";
?>
Le résultat obtenu sera :
Tarak Joulak
Guest0
3- Ecriture dans fichier
La fonction pour l’écriture dans un fichier est fputs()
int fputs ( int handle , string string , int length )
fputs écrit le contenu de la chaîne string dans le fichier pointé par handle . Si la longueur length est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne (le premier des deux). fwrite retourne le nombre d'octets écrits ou FALSE en cas d'erreur.
Syntaxe
<?
$monfichier = fopen("nom_du_fichier", "r+");
fputs ($monfichier, "Texte à écrire");
fclose ($monfichier);
?> Exemple
Exemple
<? $filename = ""; $monfichier = fopen ($filename, "a+"); $contenu="ceci est le texte a ecrire \r\n"; fputs($monfichier, $contenu); fclose ($monfichier); ?> Le résultat obtenu sera : Le fichier aura une ligne supplémentaire contenant « ceci est le texte à écrire » |
4- Fonctions diverses de traitement de fichier :
-filesize ($nom_du_fichier) fonction qui retourne la taille du fichier en octets.
-file_exists ($nom_du_fichier ) fonction qui retourne un booleen indiquant si le fichier existe ou non.
Quand dans un site web un formulaire est rempli et envoyé, le contenu des champs saisis est transféré à la page destination sous forme de variables. Ce passage de variables ou de paramètres peut se faire de deux manières : en GET ou en POST.
Syntaxe
<html> <body> <!—Envoi d’un formulaire en POST --> <form method="post" action=""> <input type="text" name="nom" size="12"><br> <input type="submit" value="OK"> </form> <!—Envoi d’un formulaire en GET --> <form method="get" action=" "> … </form> </body> </html> |
En GET les paramètres apparaissent associés à l’url sous formes de variables séparées par des & (?nom=Tarak&prenom=Joulak). En POST le passage de paramètre se fait de manière invisible.
Selon que la méthode d’envoi a été du GET ou du POST la récupération du contenu des variables est faite selon une syntaxe différente :
Syntaxe
<? //Dans le cas d’un envoi des paramètres en POST $variable1=$_POST['nom_du_champ'] ; //Dans le cas d’un envoi des paramètres en GET $variable1=$_GET['nom_du_champ'] ; ?> |
Exemple 1 :
Dans l’exemple suivant le fichier contient le script html permettant d’afficher un formulaire et d’envoyer les résultats de la saisie à la page qui elle les affichera.
Fichier
<html> <body> <form method="post" action=""> Nom : <input type="text" name="nom" size="12"><br> Prénom : <input type="text" name="prenom" size="12"> <input type="submit" value="OK"> </form> </body> </html> <? //Récupération des paramètres passés $prenom = $_POST['prenom']; $nom = $_POST['nom']; //affichage des paramètres echo "<center>Bonjour $prenom $nom</center>"; ?> En exécutant à travers le serveur web le fichier , en remplissant le formulaire et en cliquant sur OK, nous sommes emmenés vers la page qui nous affiche une phrase composée des champs saisis dans le formulaire. Les champs saisis sont donc passé de vers . Exemple 2 : L’exemple précédent peut tenir dans un seul fichier qui s’enverrait à lui même les paramètres Fichier
Remarque : La définition de la destination du formulaire (action="") aurait pu ne pas être nominative mais exploiter une variable serveur PHP_SELF puisque les paramètres sont envoyées à la page elle même. Ainsi $_SERVER['PHP_SELF'] retournera naturellement . Cela donnera donc : <form method=&qu |