BTS Groupe 1 Introduction au language php – partie n°1

Transcription

BTS Groupe 1 Introduction au language php – partie n°1
LISTE DES TRAVAUX PRATIQUES n°11– BTS Groupe 1
Introduction au language php – partie n°1
Pour chaque question du TP, vous rédigerez un document indiquant votre nom, le temps consacré au aux
différentes parties du TP, la démarche que vous avez suivi, les étapes et informations importantes à retenir par
étape et une conclusion précisant vos critiques et résultats positifs ou négatifs. Gardez à l'esprit que votre
document peut servir à l'un de vos collègues pour réaliser une démarche identique.
Votre document devra être terminé et m'être rendu impérativement complet ou non en fin de TP, ce document est
utilisé pour votre évaluation. Votre document devra m'être rendu imprimé et rédigé au format word ou html.
Votre document devra reprendre le sujet et les étapes du TP, et respectera les conseils suivants :
- Décrivez la démarche que vous allez suivre.
- Décrivez la procédure réalisée avec le temps utilisé, le résultat obtenu.
- Décrivez la méthode ou procédure de test pour valider votre résultat.
- Indiquez une conclusion mettant en valeur l'ensemble des résultats et tests réalisés, les points positifs et
négatifs.
Un document mal rédigé, mal présenté sera refusé.
Votre évaluation est basé sur le controle continu, tous vos travaux doivent impérativement m'être rendus.
1. Introduction
Origine du langage.
PHP signifie "Hypertext Preprocessor". A l'origine c'était en 1994 le "Personal Home Page Tools" ensemble de
scripts écrits par son créateur Rasmus Lerdorf. Son but initiale était d'identifier les visiteurs de son site personnel.
Le projet s'est étendu à un groupe qui le rendit public en 1997, sous le nom PHP/FI 2, puis est devenu PHP3 en
juin 1998, et enfin PHP4 en 2000.
PHP est un vrai langage de programmation de scripts. Mais qui ne s'exécute pas directement sur un système
d'exploitation comme Java ou Visual Basic. Le code PHP est intégré dans une page HTML et est encadré par des
balises <? et ?>. Il est interprété et exécuté par le serveur HTTP. (par exemple Apache)
Lorsque le serveur apache reçoit une requête en provenance d'un "client" portant sur un fichier ayant l'extension
.php (ou .php3), il n'envoie pasdirectement le contenu du fichier, comme il le ferait pour un fichier .html. Il fait
appel au module interprétant le code PHP, et envoie au client le résultat du traitement (s'il réussit), qui est du pur
code HTML à charge pour le navigateur de l'afficher.
(dans la "littérature", on parle le plus souvent de l'appel au "moteur PHP")
ATTENTION ! la page ne sera examinée par l'interpréteur PHP que si elle porte une extension caractéristique,
habituellement .php.
Rappel : le fichier de configuration /etc/httpd/conf/addon-modules/php.conf contient la directive d'inclusion du
module PHP
AddModule mod_php4.c
LoadModule php4_module /usr/lib/apache/libphp4.so
et la liste des extensions de fichiers qui seuls bénéficieront de l'interprétation par ce module :
AddType application/x-httpd-php .php .php4 .php3 .phtml
La page envoyée finalement par le serveur est toujours du pur code HTML, résultant d'une exécution, et non pas
le véritable source qui restera inaccessible à l'utilisateur : l'examen du code source sur le navigateur client ne le
renseignera en rien et il n'y verra jamais du code PHP
A l'intérieur de la page HTML, le code PHP doit être inséré entre les balises <?php ... ?>, que l'on peut abréger en
<? .... ?>
Page 1/7 - TP N°11 – Introduction au language PHP – partie n°1
Conséquence : sur une station en réseau local (même sur celle qui héberge le serveur WEB), la requête à une
page PHP, par exemple essai.php doit toujours être effectuée avec une URL de la forme
http://www.pigier.fr/essai.php, afin de s'adresser au serveur WEB.
Ecriture du code PHP
Le code PHP peut être écrit avec un simple éditeur de texte (WordPad sur Windows, vi, mc ou emacs sur Linux)
ou avec des éditeurs graphiques (easyphp, webmaker, quanta, xemacs ... )
Sa syntaxe de base qui est empruntée au C, à Java et à Perl est vite apprise. Restent les innombrables fonctions
prédéfinies et spécialisées qu'il faut rechercher dans la documentation.
Documentation : on a normalement installé le paquetage au format rpm php-manual-4.0.3 qui fournit une
abondante documentation au format HTML, accessible à /usr/share/doc/php-manual-4../index.html
Une traduction française aux formats HTML et PDF peut être téléchargée sur le site www.nexen.net (fichier
docPHP4_v4c.zip)
2. Découverte du langage par l'exemple
Notre premier script
Soit un petit texte à saisir et à sauvegarder sous le nom bonjour.php dans le répertoire racine de votre serveur
(par exemple le répertoire /var/www/html pour Linux, version RedHat ou Mandrake ou /srv/www/htdocs, version
Suse). Il s'agit de comparer ce script à son exécution sur une station, à l'appel de l'URL :
http://192.168.100.X/bonjour.php,
Voici le source du script et le résultat attendu
Code PHP
<html>
<head>
<title>Ma première page PHP</title>
</head>
<body >
<div align="center"><h2>Ma première page PHP</h2></div>
Bonjour à tous, de la part de HTML !
<p>
<?
// section en code PHP
$salut= "Salut à tous";
echo "$salut, <b>de la part de PHP</b> !" ;
?>
</body>
</html>
Page 2/7 - TP N°11 – Introduction au language PHP – partie n°1
Exécution
Ma première page PHP
Bonjour à tous, de la part de HTML
!
Salut à tous, de la part de PHP !
Examen du code expédié par le serveur, et affiché par le navigateur : c'est du pur HTML !
Code HTML reçu
<html>
<head>
<title>Ma première page PHP</title>
</head>
<body>
<div align="center"><h2>Ma première page PHP</h2></div>
Bonjour à tous, de la part de HTML !
<p>
Salut à tous, <b>de la part de PHP</b> !
</body>
</html>
Exécution
Ma première page PHP
Bonjour à tous, de la part de HTML
!
Salut à tous, de la part de PHP !
Nous constatons que le rôle du moteur PHP sur le serveur s'est cantonné, sur cet exemple, à inclure la chaine de
caractères Salut à tous, <b>de la part de PHP</b> ! dans la page HTML (reçue par le navigateur), c'est-à-dire à
remplacer la variable par sa valeur.
L'instruction echo (on peut utiliser aussi print) écrit donc simplement son argument, entre guillements, dans la
page HTML, mais en remplaçant les noms de variables par leur valeur.
Petit questionnaire
L'interactivité de notre premier script est vraiment nulle. Voici un second exemple qui va faire découvrir l'aisance
de PHP à traiter les formulaires HTML.
Il s'agit ici de présenter à l'utilisateur un petit formulaire HTML classique, qu'il devra remplir puis valider. A sa
validation, les valeurs contenues dans ce formulaire sont envoyées au programme reponse.php situé sur le
serveur (que ces valeurs aient été saisies par l'utilisateur ou bien proposées par défaut et inchangées). Ce script
PHP a été écrit de façon à "répondre" (éventuellement après traitement, voire consultation d'une base de
données).
La réponse est forcément une page HTML expédiée au navigateur de l'utilisateur.
Voici le code de cette page HTML, nommée demande.html.
Les valeurs du questionnaire seront traitées à la validation par le script reponse.php .
Code HTML de demande.html
Page 3/7 - TP N°11 – Introduction au language PHP – partie n°1
<html><head></head><body>
<FORM ACTION="reponse.php" METHOD="POST">
<TABLE BORDER=0>
<TR>
<TD>Nom</TD>
<TD>
<INPUT TYPE="text" NAME="nom" SIZE=20 value=""></TD>
</TR>
<TR>
<TD>Prénom</TD>
<TD><INPUT TYPE="text" NAME="prenom" SIZE=20 value=""></TD>
</TR>
<TR>
<TD>Age</TD>
<TD><INPUT TYPE="text" NAME="age" SIZE=5 value="25"></TD>
</TR>
<TR>
<TD>Sexe</TD>
<TD>
<INPUT TYPE="radio" NAME="sexe" VALUE="2" checked > féminin
<INPUT TYPE="radio" NAME="sexe" VALUE="1" > masculin</TD>
</TR>
<TR>
<TD>Profession</TD>
<TD>
<input type="radio" checked name="profession" VALUE="e"> enseignant
<input type="radio" name="profession" VALUE="f"> formateur</TD>
</TR>
</TABLE>
<P>
<INPUT TYPE="submit" VALUE="Valider">
<INPUT TYPE="reset" VALUE="Effacer">
</P>
</FORM>
</body></html>
et voici le code du script reponse.php
Code PHP de reponse.php
<html><head></head><body>
<div align="center"><h2>Réponse au questionnaire</h2></div>
<?
$titre = ( $sexe==2 ? "madame" : "monsieur");
if ( $sexe == 2)
$profession=( $profession=="e" ? "enseignante" : "formatrice");
else
$profession=( $profession=="e" ? "enseignant" : "formateur");
echo "Bonjour $titre $prenom $nom<br>" ;
echo "Votre profession : $profession<br>";
echo "et vous déclarez avoir actuellement $age ans";
?>
</body></html>
Travaux n° 1 :
Editez les fichiers demande.html et reponse.php, placez les dans le répertoire racine du serveur apache,
puis accédez à la page demande.html.
Page 4/7 - TP N°11 – Introduction au language PHP – partie n°1
. remplissez le formulaire.
. Validez la saisie et vérifiez le résultat
. Déduisez le fonctionnement du script présent dans reponse.php.
3. Traitement de formulaires en PHP
Quelques rappels
Nous avons vu précédemment le mécanisme de création automatique d'une variable PHP pour chaque
information en provenance d'un formulaire lors de sa validation.
L'interpréteur PHP appelé par la validation d'un formulaire HTML a accès immédiat aux données des différents
champs de ce formulaire.
La règle est simple : le nom donné à un élément de formulaire grâce au paramètre NAME devient alors une
variable PHP portant le même nom, mais précédée du symbole $ (ce symbole distingue toujours les
identificateurs de variables)
Ainsi, chaque NAME="abc" définit automatiquement une variable $abc. Sa valeur PHP est égale au contenu du
champs HTML, identifié par "NAME=abc"
Par exemple, soit le simple formulaire :
<FORM ACTION="inscrire.php" >
<INPUT TYPE="text" NAME="prenom" SIZE=10 VALUE="Jean">
<INPUT TYPE="submit" VALUE="Valider">
<FORM >
La validation provoque le transfert des données du formulaire (nature, nom et valeur des éléments) vers le
programme appelé inscrire.php .
Celui-ci possède d'emblée une variable $prenom dont la valeur est la chaine saisie à la validation, ou "Jean" par
défaut.
Interactivité fondamentale entre HTML et PHP
On distingue 2 façons de passer des valeurs issues d'un formulaire à un script écrit en PHP (ou un autre langage).
Il s'agit de méthodes implémentées dans le protocole HTTP appelées GET et POST
La méthode GET
Il s'agit du mode de transmission par défaut . Les paramètres passés au moment de la validation sont ajoutés à
l'URL du script appelé.
Cette chaine s'écrit ?nom1=valeur1&nom2=valeur2&...
Méthode GET
<FORM>
Donnez votre prénom, puis validez :
Donnez votre prénom, puis validez : <INPUT TYPE=text NAME=prenom>
<INPUT TYPE=submit VALUE="Valider">
</FORM>
Valider
Vous vous appelez
<P>
Vous vous appelez
<?
echo "$prenom";
?>
</P>
Commentaires
L'interpréteur PHP a accès immédiat aux données des formulaires HTML, lorque ceux-ci sont soumis, c'est-à-dire
à la validation par le bouton submit. La règle est simple :
Page 5/7 - TP N°11 – Introduction au language PHP – partie n°1
Le nom de l'élément de formulaire devient une variable PHP, qui porte le même nom, tout en étant préfixée
par le symbole $ (ce qui caractérise toujours les variables PHP)
Si on laisse le champ de saisie vide, la page est rechargée, avec une URL à laquelle s'est ajouté ?nom=.
On en déduit que laisser le champ vide, n'a pas provoqué d'affectation à la variable PHP $nom, d'où l'affichage
inchangé.
Si on a validé le nom "toto" dans le formulaire, la chaine ?nom=toto est ajoutée à l'URL de la présente page , ce
qui indique :
Il y a bien affectation de $nom à la chaine saisie dans le champ nommé nom
L'URL de la page étant changée, la page est rechargée
L'instruction PHP incorporée dans le code HTML echo $nom; a été exécutée sur le serveur et se traduit par
l'affichage observé
Pour bien comprendre que la validation de la saisie équivaut à l'ajout de la chaine ?nom=.. dans l'URL, saisissez
directement le nom dans l'URL.
Qu'observez-vous ?
Le mode de requête décrit précédemment est le mode par défaut, appelé méthode GET. Les paramètres passés
au moment de la validation sont ajoutés sous forme d'une chaine ?nom1=valeur1&nom2=valeur2&... à l'URL
demandée, qui se trouve être la même page par défaut, si on n'en précise pas d'autre.
La méthode POST
Méthode POST
Donnez votre prénom,
puis validez :
Valider
<FORM ACTION="php-formulaire.php" METHOD="POST">
Donnez votre prénom, puis validez :
<INPUT TYPE=text NAME=prenom2>
<INPUT TYPE=submit VALUE="Valider">
</FORM>
<P>
Vous vous appelez
<?
echo "$prenom2";
?>
Vous vous appelez
Commentaires
Quelques fonctions et méthodes
Il n'est pas possible de soumettre (par le bouton submit) conditionnellement le formulaire en fonction du
contexte, par exemple suivant la valeur prise par une variable
En effet, le fichier appelé, indiqué par la clause ACTION"..." de la balise FORM est unique. Ce script doit
donc être capable de traiter tous les cas envisageables, fonction de l'état du formulaire à sa validation, et
par conséquent doit pouvoir agir selon l'état de chaque composant du formulaire.
On sait qu'il y a création automatique d'une variable PHP, pour chaque composant nommé (par NAME= ...
), même si le composant n'a fait l'objet d'aucune saisie (champ "text"), ou d'aucune sélection (boutons,
cases, listes déroulantes ..).
Dans ce cas, ces variables de champ sont définies, mais n'ont pas de valeur. On teste cette situation avec
la fonction empty($var).
qui alors renvoie TRUE. Sinon FALSE quand la variable $var est définie et possède une valeur.
Pour savoir si une variable est définie, qu'elle ait reçue une valeur ou non, on utilise isset($var).
Elle renvoie TRUE si la variable $var est définie, FALSE sinon.
Auto-soumission
Il est plus simple finalement d'intégrer le script de traitement du formulaire dans la page même qui contient
ce formulaire.
Naturellement, cette page doit avoir l'extension .php pour que le serveur HTTP fasse appel à l'interpréteur
PHP L'url passée dans le champ ACTION du formulaire doit donc être celle de la page elle-même.
Affichage conditionnel d'un formulaire et de son traitement.
On doit d'abord proposer le formulaire, puis lorsqu'il est soumis, ne pas le réafficher. Pour décider dans quel cas
où se trouve il suffit de tester l'existence d'une variable dans le script, qui attestera à coup sûr que la validation du
Page 6/7 - TP N°11 – Introduction au language PHP – partie n°1
formulaire a bien eu lieu.
Le plus simple est de tester la variable correspondant au nom du bouton submit
Voici un schéma général de programme :
<?
if (isset($valide)) {
/* traitement du formulaire */
} else {
?>
/ * affichage du formulaire HTML si $valide = FALSE */
<FORM ACTION="<? echo $PHP_SELF ?>" METHOD="POST">
/* affichage des composants */
<INPUT TYPE="submit" NAME="valide" VALUE="Valider">
</FORM>
Exemple de démonstration
Code PHP
<?
if (isset($valide)) {
if (! empty($mot )
echo "Bonjour $mot <P>";
else
echo "Vous n'avez pas donné votre prénom [:-( <P>" ;
echo "Pour <A HREF=\"$PHP_SELF\"> afficher le formulaire</A>";
}
else
echo "
<FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\">
Quel est votre prénom ? <BR>
<input type=\"text\" name=\"mot\" value=\"\">
<P>
<INPUT TYPE=\"submit\" NAME=\"valide\" VALUE=\"Valider\">
<INPUT TYPE=\"reset\" NAME=\"reset\" VALUE=\"Annuler\">
</FORM>
"
?>
Exécution
Quel est votre prénom ?
Valider
Annuler
Commentaires
Remarquer comment on peut générer du code HTML à l'intérieur de PHP avec echo " .......", le code HTML
pouvant se répartir sur plusieurs lignes.
Travaux n° 2 :
Réalisez une page permettant la saisie :
d'un nom dans la variable nom
d'un prenom dans la variable prenom
de l'age dans la variable age
3 choix : choix 1–célibataire choix2-marié choix3-divorcé dans la variable matrimo avec les valeurs 1,2,3.
par defaut le choix 1 est validé.
La page affichera ensuite le contenu des variables saisies, si le nom et le prenom est correct et si l'age est
compris entre 18 et 50 ans, sinon affiché le message d'erreur approprié et demandez à resaisir la fiche.
Page 7/7 - TP N°11 – Introduction au language PHP – partie n°1