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