PHP : les bases. Enfin, nous aborderons les boucles en écrivant du code PHP générant une structure de tableau HTML de façon répétitive.



Documents pareils
INTRODUCTION A JAVA. Fichier en langage machine Exécutable

< Atelier 1 /> Démarrer une application web

Formulaire pour envoyer un mail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

GUIDE Excel (version débutante) Version 2013

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

HTML. Notions générales

Programmation Internet Cours 4

Programmation Web. Madalina Croitoru IUT Montpellier

Introduction à PHP. Au sommaire de ce chapitre

Gestion de stock pour un magasin

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Chapitre 1 Qu est-ce qu une expression régulière?

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Module BD et sites WEB

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

LE CONCEPT DU CMS CHAPITRE 1

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Création de formulaires interactifs

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Optimiser les s marketing Les points essentiels

Bernard Lecomte. Débuter avec HTML

TP JAVASCRIPT OMI4 TP5 SRC

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Créer le schéma relationnel d une base de données ACCESS

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Comment bien référencer mes sites internet? Les 100 SECRETS EN VIDÉO

Présentation du langage et premières fonctions

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Dans cette Unité, nous allons examiner

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Optimiser moteur recherche

Architectures web/bases de données

TP1 - Prise en main de l environnement Unix.

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Votre site Internet avec FrontPage Express en 1 heure chrono

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

145A, avenue de Port Royal, Bonaventure (Québec) G0C 1E0 Sans frais :

Création et utilisation de formulaire pdf

Europresse.com. Pour les bibliothèques publiques et de l enseignement. Votre meilleur outil de recherche en ligne. Guide version 1.

les techniques d'extraction, les formulaires et intégration dans un site WEB

L informatique en BCPST

Algorithmique et Programmation, IMA

Utilisation d objets : String et ArrayList

Utilisation de l éditeur.

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Évaluation et implémentation des langages

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

TP1. Outils Java Eléments de correction

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Le réseau et les tables virtuelles Synapse

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Initiation à html et à la création d'un site web

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Optimiser pour les appareils mobiles

Devenez un véritable développeur web en 3 mois!

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

Créer et partager des fichiers

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Guide plateforme FOAD ESJ Lille

La base de données dans ArtemiS SUITE

Traitement de texte : Quelques rappels de quelques notions de base

Débuter avec Excel. Excel

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

INTRODUCTION AU CMS MODX

Stockage du fichier dans une table mysql:

Utiliser un tableau de données

Publier dans la Base Documentaire

Utiliser le site Voyages-sncf.com

La messagerie électronique avec La Poste

Manuel d utilisation pour la plateforme BeExcellent MANUEL D UTILISATION POUR LA PLATEFORME BEEXCELLENT

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Outils pour la pratique

à l édition de textes

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Attaques applicatives

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Service On Line : Gestion des Incidents

Publication dans le Back Office

TP 1. Prise en main du langage Python

TP 1 Prise en main de l environnement Unix

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Manuel d utilisation du web mail Zimbra 7.1

Mode d'emploi de la newsletter

1 Introduction et installation

Manuel de mise en page de l intérieur de votre ouvrage

Transcription:

1 PHP : les bases Ce chapitre expose succinctement la syntaxe et les constructions du langage PHP. Les programmeurs PHP y trouveront peut-être l occasion de compléter leurs connaissances sur le sujet. L étude de ce chapitre sera plus facile et plus rapide pour ceux qui possèdent des notions de base sur d autres langages de programmation, comme C, Perl ou ASP. Dans cet ouvrage, l apprentissage qui vous est proposé repose sur de nombreux exem ples du monde réel, tirés de l expérience des auteurs en matière de conception de sites web. Les manuels de programmation exposent souvent la syntaxe de base en s appuyant sur des exemples simples mais notre parti pris est différent. Nous pensons qu il est préférable d apprendre un langage de programmation en réalisant des projets opérationnels, plutôt qu assimiler un recueil de fonctions et un exposé de la syntaxe qui n apportent guère plus que le manuel en ligne. En conséquence, nous vous proposons de vous faire la main sur les exemples donnés ici ; vous pouvez les saisir ou les charger à partir de notre site pearson à la page dédiée à ce livre (www.pearson.fr), les modifier, en isoler des extraits et apprendre à les adapter à vos besoins. Dans ce chapitre, vous verrez comment utiliser les variables, les opérateurs et les expressions en construisant un formulaire de commande en ligne. Nous étudierons également les types de variables et les priorités des opérateurs. Vous apprendrez ensuite à accéder aux variables des formulaires et à manipuler celles-ci afin de calculer le montant total et les taxes dans un bon de commande émis par un client. Nous poursuivrons le développement de cet exemple en insérant dans notre script PHP le code nécessaire à un contrôle de la validité des données entrées par l utilisateur. À cette occasion, nous présenterons le concept de valeurs booléennes, ainsi que plusieurs exemples d utilisation des instructions if, else et switch et de l opérateur?:. Enfin, nous aborderons les boucles en écrivant du code PHP générant une structure de tableau HTML de façon répétitive.

16 PHP & MySQL Utilisation de PHP La réalisation et l exécution des exemples présentés dans cet ouvrage nécessitent d avoir accès à un serveur web sur lequel PHP est installé. Pour tirer le meilleur parti des exemples et des cas d école traités ici, il est conseillé de les exécuter et d essayer de les modifier. Pour cela, vous avez besoin d une installation de test où vous puissiez expérimenter à loisir. Si PHP n est pas installé sur votre ordinateur, vous devez commencer par procéder à son installation ou contacter votre administrateur système pour qu il s en charge. Vous trouverez à l Annexe A, "Installation de PHP et de MySQL", une description de la procédure d installation. Le CD-ROM joint à cet ouvrage contient tous les logiciels nécessaires à l installation de PHP sous Unix ou Windows. Formulaires HTML Le traitement des formulaires HTML constitue une des applications les plus courantes que doivent prendre en charge les langages de script exécutés côté serveur. C est pour quoi nous allons commencer l apprentissage de PHP par l implémentation d un formu laire de commande pour une entreprise fictive de vente de pièces détachées dénommée Le garage de Bob. Vous trouverez tout le code relatif à cette application modèle dans le répertoire chapitre01 du CD-ROM joint. Code du formulaire Nous allons partir du stade où le programmeur de l entreprise a établi un formulaire permettant aux clients de passer des commandes (voir Figure 1.1). Il s agit d un formu laire simple, comparable aux nombreux autres publiés sur le Web. Figure 1.1 Le formulaire initial de Bob n enregistre que les articles et leurs quantités respectives. À partir de ce formulaire, Bob veut en premier lieu récupérer la liste des articles commandés par son client, établir le montant total de la commande, ainsi que le montant des taxes à payer sur cette commande.

Chapitre 1 PHP : les bases 17 Une partie du code HTML générant ce formulaire est présentée dans le Listing 1.1. Listing 1.1 : orderform.html Code HTML générant le formulaire basique de commande de Bob <form action="processorder.php" method=post> <table border=0> <tr bgcolor=#cccccc> <td width=150>articles</td> <td width=15>quantité</td> </tr> <tr> <td>pneus</td> <td align= center ><input type= text name= qte_pneus size= 3 maxlength= 3 ></td> </tr> <tr> <td>huiles</td> <td align= center ><input type= text name= qte_huiles size= 3 maxlength= 3 ></td> </tr> <tr> <td>bougies</td> <td align= center ><input type= text name= qte_bougies size= 3 maxlength= 3 ></td> </tr> <tr> <td colspan= 2 align= center > <input type= submit value= Passer commande > </td> </tr> </table> </form> Tout d abord, notez que l attribut action de la balise form de ce formulaire a pour valeur le nom du script PHP qui va traiter la commande du client (et que nous écrirons un peu plus loin). En général, la valeur affectée à l attribut action est l URL à charger lorsque l utilisa teur appuie sur le bouton submit. Les données saisies par l utilisateur dans le formulaire sont alors transmises à cette URL, via la méthode spécifiée dans l attribut method, c est-à-dire soit get (dans ce cas, les données sont spécifiées à la fin de l URL), soit post (dans ce cas, les données sont transmises sous forme d un paquet séparé). Notez également les noms des champs du formulaire (qte_pneus, qte_huiles et qte_bougies) : comme nous les utiliserons dans notre script PHP, il est important de choisir des noms explicites facilement mémorisables. Certains éditeurs HTML génèrent par défaut des noms de champs tels que field23 mais il est difficile de s en souvenir lors que l on écrit ensuite le script. Pour faciliter votre travail de programmeur PHP, nous vous conseillons d adopter des noms qui reflètent la nature des données entrées dans les champs.

18 PHP & MySQL Vous devriez même adopter une convention pour dénommer les noms des champs lors de la création d un site web ; de cette façon, les noms des champs se conformeront au même format sur l ensemble du site. Une telle convention peut, par exemple, stipuler que les noms de champ sont obtenus en abrégeant les mots et en remplaçant les espaces par des blancs soulignés. Traitement du formulaire Pour traiter le formulaire, nous devons créer le script processorder.php auquel renvoie la valeur de l attribut action de la balise form. Dans votre éditeur de texte, tapez le code suivant et sauvegardez-le sous ce nom : <html> <head> <title>le garage de Bob Résultats de la commande</title> </head> <body> <h1>le garage de Bob</h1> <h2>résultats de la commande</h2> </body> </html> Vous remarquerez que ces lignes ne sont que du code HTML. Nous allons à présent leur ajouter du code PHP. Incorporation de code PHP dans du code HTML Sous la balise de titre <h2>, saisissez les lignes suivantes : <? echo <p>commande traitée. ;?> Enregistrez votre fichier, puis chargez-le dans votre navigateur web en remplissant le formulaire de Bob et en cliquant sur le bouton Passer commande. La Figure 1.2 montre le résultat que vous devez alors obtenir. Figure 1.2 Le texte passé à une ins truction echo de PHP est affiché dans le navigateur web.

Chapitre 1 PHP : les bases 19 Notez comment le code PHP a été incorporé dans un fichier HTML "normal". Affichez la source de la page dans votre navigateur. Voici le code que vous devriez voir : <html> <head> <title>le garage de Bob - Résultats de la commande</title> </head> <body> <h1>le garage de Bob</h1> <h2>résultats de la commande</h2> <p>commande traitée. </body> </html> Le code PHP brut n est pas affiché tel quel dans le navigateur. En effet, l interpréteur PHP analyse le script et le remplace par le résultat de son exécution. À partir d un script PHP, nous pouvons ainsi produire du code HTML directement affichable dans un navigateur, sans que le navigateur comprenne le langage PHP. Cet exemple illustre le concept de programmation web côté serveur : le code PHP est interprété et exécuté sur le serveur web, contrairement au code JavaScript et aux autres technologies côté client, qui sont interprétées et exécutées par le navigateur, sur l ordi nateur de l utilisateur. Le code contenu dans le fichier considéré ici se compose de quatre éléments : du HTML ; des balises PHP ; des instructions PHP ; des espaces. Nous pouvons également y ajouter des commentaires. La plupart des lignes de cet exemple sont simplement du code HTML. Balises PHP Dans l exemple précédent, le code PHP commence par les caractères <? et se termine par les caractères?>. Cette syntaxe est comparable à la syntaxe des balises du HTML, qui commencent elles aussi par le caractère < (inférieur à) et se terminent par le caractère > (supérieur à). Ces symboles sont appelés balises PHP et indiquent au serveur web où commence et où finit le code PHP. Tout texte placé entre ces bali ses est interprété comme du code PHP et tout texte situé en dehors est traité comme du code HTML normal. Les balises PHP permettent ainsi de "s échapper" du contexte HTML. Il existe différents types de balises. Examinons-les plus en détail.

20 PHP & MySQL Styles des balises PHP Il existe actuellement quatre styles différents de balises PHP. Les différents fragments de code qui suivent sont équivalents. Style XML : <?php echo "<p>commande traitée.";?> Il s agit du style de balise qui sera employé dans ce livre. Ce style est le style de référence à utiliser avec PHP 3 et PHP 4 car l administrateur du serveur ne peut pas le désactiver, ce qui vous garantit sa disponibilité sur tous les serveurs et qui est particulièrement important si vous écrivez des applications qui peuvent être utilisées sur différentes installations. Ce style de balise est compatible avec des documents XML (extensible Markup Language). Nous vous conseillons d utiliser ce style de balise. Style abrégé : <? echo "<p>commande traitée.";?> Ce style de balise est le plus simple ; il respecte le style des instructions de traitement SGML (Standard Generalized Markup Language). Pour utiliser ce type de balise, qui est le plus rapide à saisir au clavier, vous devez autoriser l option open_ tag dans votre fichier de configuration ou compiler PHP en activant les balises abrégées. Vous trouverez plus d informations concernant ce style de balise dans l Annexe A. Nous vous déconseillons de l utiliser car il ne fonctionnera pas dans de nombreux environnements puisqu il n est plus activé par défaut. Style SCRIPT : <SCRIPT LANGUAGE= php > echo "<p>commande traitée."; </SCRIPT> Ce style de balise est le plus long et le plus familier pour les utilisateurs de Java Script ou de VBScript. Vous pouvez l adopter si votre éditeur HTML pose problème avec les autres styles de balise. Style ASP : <% echo "<p>commande traitée."; %> Ce style de balise est analogue au style utilisé dans les pages ASP (Active Server Pages) ou ASP.NET. Pour l employer, vous devez activer le paramètre de configura tion asp_tags. Vous n avez aucune raison d utiliser ce style, sauf si votre éditeur de texte est orienté ASP ou ASP.NET. Notez que, par défaut, ce style de balise est désac tivé. Instructions de PHP Pour informer l interpréteur PHP des actions à entreprendre, il faut insérer des instruc tions entre les balises PHP d ouverture et de fermeture.

Chapitre 1 PHP : les bases 21 Dans l exemple considéré ici, nous n utilisons qu un seul type d instruction : echo "<p>commande traitée."; Vous l avez déjà probablement deviné, l emploi de la construction echo se traduit par un résultat très simple : l affichage dans la fenêtre du navigateur de la chaîne qui lui est passée en paramètre. Notez le point-virgule placé à la fin de l instruction echo. Le point-virgule s emploie pour séparer les instructions PHP les unes des autres, tout comme le point s emploie pour séparer des phrases en français. Si vous avez déjà programmé en C ou en Java, cette syntaxe ne vous est pas étrangère. L oubli d un point-virgule en fin d instruction est une erreur de syntaxe très répandue. Cette erreur est toutefois facile à détecter et à corriger. Espaces Les caractères d espacement, tels que les nouvelles lignes (retour chariot), les espaces et les tabulations, constituent ce que l on appelle des espaces. Vous le savez probable ment déjà, les navigateurs ignorent les espaces dans le code HTML. Il en va de même avec le moteur PHP. Soit les deux fragments HTML suivants : et <h1>bienvenue dans le garage de Bob!</h1><p>Que voulez-vous commander aujourd hui? <h1>bienvenue dans le garage de Bob!</h1> <p>que voulez-vous commander aujourd hui? L exécution de ces deux fragments donne le même résultat à l affichage parce qu ils apparaissent comme identiques pour le navigateur web. Vous pouvez toutefois utiliser des espaces dans votre code HTML et vous êtes même fortement encouragé à le faire avec soin pour améliorer la lisibilité de votre code. Il en va de même en PHP. Rien ne vous oblige à insérer des espaces entre des instructions PHP, mais vous obtiendrez des programmes PHP beaucoup plus lisibles si vous placez vos instructions sur des lignes séparées. Par exemple : et echo bonjour ; echo à tous ; echo bonjour ;echo à tous ; sont équivalentes, mais la première version est bien plus lisible.

22 PHP & MySQL Commentaires Les commentaires placés dans les programmes sont en quelque sorte des indications écrites à l intention des personnes qui lisent le code. Vous pouvez insérer des commen taires pour expliquer les actions du script, indiquer l auteur du script, expliquer pour quoi l implémentation a été effectuée de telle manière, donner la date de dernière modification et ainsi de suite. En général, tous les scripts PHP contiennent des commentaires, à l exception peut-être des plus simples. L interpréteur PHP ignore tout le texte placé dans un commentaire. Plus précisément, l analyseur PHP saute les commentaires, comme s il s agissait d espaces. Le langage PHP supporte les commentaires de style C, C++ et shell. Voici un commentaire de plusieurs lignes écrit dans le style C et qui pourrait figurer au début d un script PHP : /* Auteur : Bob Smith Date de dernière modification : 10 avril Ce script traite les commandes client. */ Les commentaires sur plusieurs lignes doivent être encadrés par les paires de caractères /* et */. Tout comme en C, il est interdit d imbriquer des commentaires multiligne. Vous pouvez également insérer des commentaires d une seule ligne, soit dans le style C++ : echo <p>commande traitée. ; // Début de l affichage soit dans le style des scripts shell : echo <p>commande traitée. ; # Début de l affichage Avec ces deux derniers styles, tout le texte placé après le symbole de commentaire (# ou //) est considéré comme du commentaire tant que la fin de la ligne ou la balise PHP de clôture n a pas été atteinte. Dans la ligne de code suivante, le texte avant la balise fermante, voici un commentaire, fait partie d un commentaire. Le texte après la balise fermante, pas ici, est traité comme du HTML parce qu il se trouve après la balise fermante : // voici un commentaire?> pas ici Ajout de contenu dynamique Jusqu ici, tout ce que nous avons codé en PHP aurait tout aussi bien pu être codé en HTML, avec le même résultat.

Chapitre 1 PHP : les bases 23 Le principal intérêt d un langage de script côté serveur réside dans la création de contenu dynamique. Il s agit là d un atout important, parce qu un contenu se modifiant pour s adapter aux besoins de chaque utilisateur, ou en fonction du temps, incite les internautes à revenir sur votre site. Le langage PHP permet facilement de mettre en œuvre un tel effet dynamique. Commençons par un exemple simple. Remplacez le code PHP précédemment inséré dans le fichier processorder.php par le code suivant : <?php echo <p>commmande traitée à ; echo date( H:i, \l\e j-m-y ); echo </p> ;?> Dans ce fragment, nous nous servons de la fonction date() prédéfinie du langage PHP pour indiquer au client la date et l heure du traitement de sa commande. L affichage qui en résulte sera différent à chaque nouvelle exécution du script. La Figure 1.3 montre un exemple de l affichage généré par l exécution du script. Figure 1.3 La fonction PHP date() renvoie une chaîne de date mise en forme. Appel de fonctions Examinez l appel de la fonction date() dans le fragment de code considéré ici. L appel a été réalisé avec la syntaxe standard. Le langage PHP comprend une riche bibliothèque de fonctions pour le développement d applications web et la plupart de ces fonctions requièrent que des données leur soient passées pour renvoyer un résultat. Soit l appel de fonction suivant : date( H:i, \l\e j-m-y ) Notez qu une chaîne (des données textuelles) est passée à la fonction dans une paire de parenthèses. L élément entre les parenthèses est appelé le paramètre, ou argument de la fonction. Ces arguments constituent les entrées utilisées par la fonction pour générer le résultat spécifique attendu.

24 PHP & MySQL Fonction date() La fonction date() attend que le paramètre qui lui est passé soit une chaîne de format, spécifiant le style voulu pour la sortie. Chacune des lettres de la chaîne représente une partie de la date et de l heure. H est l heure dans un format sur 24 heures avec des zéros d en-tête si nécessaire, i représente les minutes avec un zéro d en-tête si nécessaire, j représente le jour du mois sans zéro d en-tête, m représente le numéro du mois et J représente l année, sous un format à quatre chiffres. Les caractères précédés d un antis lash représentent du texte littéral (vous trouverez la liste complète des formats pris en charge par la fonction date() au Chapitre 19). Accès aux variables des formulaires Le principal objectif d un formulaire de commande est la collecte des informations rela tives aux commandes des clients. Récupérer les données saisies par le client dans un tel formulaire se révèle très facile avec PHP mais la méthode employée dépend de la version que vous utilisez et d un paramétrage dans votre fichier php.ini. Variables des formulaires Dans votre script PHP, vous pouvez accéder à chacun des champs d un formulaire par le biais de variables dont les noms font référence au nom du champ de formulaire associé. Dans le langage PHP, les noms de variables sont reconnaissables du fait de la présence du préfixe dollar ($). L oubli du signe dollar constitue une erreur de programmation courante. En fonction de votre version et de votre installation PHP, vous disposez de trois manières pour accéder aux données d un formulaire via des variables. Ces méthodes ne portent pas de noms officiels, c est pourquoi nous les avons appelées les styles "abrégé", "médium" et "long". Dans tous les cas, il est possible d accéder dans le script à chacun des champs de formulaire soumis au script. Vous pouvez accéder au contenu du champ qte_pneus des manières suivantes : $qte_pneus $_POST[ qte_pneus ] $HTTP_POST_VARS[ qte_pneus ] // style abrégé // style médium // style long Dans cet exemple, ainsi que dans tout le reste de cet ouvrage, nous avons adopté le style médium de référencement des variables de formulaire (autrement dit, $_ POST[ qte_pneus ]), mais nous créons des versions abrégées des variables pour des raisons de commodité (cette approche est recommandée depuis PHP 4.2.0). Pour vos programmes personnels, vous pouvez choisir une approche différente mais vous devez être conscient des enjeux ; c est pourquoi nous présentons dès maintenant les différentes méthodes.

Chapitre 1 PHP : les bases 25 En bref : Si le style abrégé ($qte_pneus) est pratique, il exige que le paramètre de configuration register_globals soit activé. Son activation ou sa désactivation par défaut dépend de la version de PHP. Dans toutes les versions depuis 4.2.0, il a été désactivé par défaut. Ce style favorisant les erreurs susceptibles de rendre votre code vulnérable aux attaques, il est désormais déconseillé. Ce serait de toute façon une mauvaise idée de l utiliser dans du nouveau code car il y a de fortes chances pour qu il disparaisse en PHP 6. Le style médium ($_POST[ qte_pneus ]) est maintenant l approche recommandée. Il est assez pratique mais n est apparu qu avec PHP 4.1.0 ; il ne fonctionnera donc pas sur de très anciennes installations. Le style long ($HTTP_POST_VARS[ qte_pneus ]) est le plus "bavard". Notez cependant qu il a été déclaré obsolète (deprecated) et qu il est en conséquence vraisemblable qu il disparaîtra dans le long terme. Ce style était auparavant le plus portable mais peut maintenant être désactivé via la directive de configuration register_long_arrays, qui améliore les performances. Là aussi, il est déconseillé de l utiliser dans du nouveau code, sauf si l on a de très bonnes raisons de penser que le script sera installé sur un serveur ancien. Lorsqu on emploie le style abrégé, les variables du script portent les mêmes noms que les champs du formulaire HTML, c est pourquoi il n est pas nécessaire de déclarer les variables ou d entreprendre quoi que ce soit pour les créer dans le script. Les variables sont passées au script de la même façon que des arguments le sont à une fonction. Avec le style abrégé, on peut donc se contenter d utiliser une variable comme $qte_pneus car le champ du formulaire la crée automatiquement dans le script de traitement. Ce type d accès pratique aux variables est attrayant mais, avant d activer register_ globals, il convient de s intéresser aux raisons pour lesquelles l équipe chargée du développement de PHP l a désactivée. Le fait de pouvoir accéder directement aux variables est très pratique mais cela facilite l apparition d erreurs de programmation susceptibles de compromettre la sécurité de vos scripts. Lorsque les variables d un formulaire deviennent automatiquement des variables globales, il n y a plus de séparation évidente entre les variables créées par le programmeur et les variables douteuses directement envoyées par l utilisateur. Si vous ne prenez pas la précaution de donner à toutes vos variables une valeur initiale, les utilisateurs de vos scripts peuvent donc passer des variables et des valeurs, sous la forme de variables de formulaire, qui se mélangeront aux vôtres. En conséquence, si vous choisissez le style abrégé pour accéder aux variables, vous devez vous assurer de donner une valeur initiale à vos variables. Le style médium implique la récupération des variables de formulaire à partir d un des tableaux $_POST, $_GET ou $_REQUEST. Un tableau $_GET ou $_POST contiendra

26 PHP & MySQL tous les détails de toutes les variables du formulaire. Le choix du tableau dépend de la méthode (GET ou POST, respectivement) utilisée pour l envoi du formulaire. En outre, une combinaison de toutes les données envoyées via POST ou GET sera disponible par le biais de $_REQUEST. Si le formulaire utilise la méthode POST, la valeur entrée dans le champ qte_ pneus sera enregistrée dans $_POST[ qte_pneus ]. Si c est la méthode GET qui est employée, cette valeur sera contenue dans $_GET[ qte_pneus ]. Dans les deux cas, la valeur sera dispo nible dans $_REQUEST[ qte_pneus ]. Ces tableaux font partie des tableaux "superglobaux", dont nous reparlerons lorsque nous évoquerons la portée des variables. Si vous utilisez une version très ancienne de PHP, il est possible que vous n ayez pas accès aux tableaux $_POST ou $_GET : dans les versions antérieures à la 4.1.0, les mêmes informations étaient enregistrées dans des tableaux appelés $HTTP_ POST_VARS et $HTTP_GET_VARS. C est ce que nous appelons le style long. Comme nous l avons indiqué précédemment, ce style a été déclaré "obsolète". Il n y a pas d équivalent au tableau $_REQUEST dans ce style. Avec le style long, vous pouvez accéder à la réponse de l utilisateur via $HTTP_POST_ VARS[ qte_pneus ] ou $HTTP_GET_VARS[ qte_pneus ]. Les exemples dans ce livre ont été testés avec la version 5.2 de PHP et ils seront parfois incompatibles avec des versions de PHP antérieures à la version 4.1.0. C est pourquoi nous vous recommandons d utiliser, dans la mesure du possible, une version récente de PHP. Prenons un autre exemple. Le style médium de référencement des variables utilisant un type de variable appelé tableau (lesquels ne seront vraiment étudiés qu au Chapitre 3), nous commencerons l écriture du script en créant des copies de variables plus faciles à manipuler. Pour copier la valeur d une variable dans une autre, servez-vous de l opérateur d affec tation, qui, en PHP, est le signe "égal" (=). La ligne de code suivante crée une nouvelle variable appelée $qte_pneus et y copie le contenu de $_POST[ qte_pneus ] : $qte_pneus = $_POST[ qte_pneus ]; Insérez le bloc de code qui suit au début du script. Tous les autres scripts présentés dans ce livre et qui traitent des données issues de formulaire commenceront par un bloc du même genre. Ce bloc ne générant pas de sortie, il importe peu qu il soit placé avant ou après la balise <html> ou les autres balises HTML du début de votre page. En général, nous le plaçons au tout début du script afin qu il soit facilement repérable. <?php // Crée des noms de variables abrégées $qte_pneus = $_POST[ qte_pneus ];

Chapitre 1 PHP : les bases 27 $qte_huiles = $_POST[ qte_huiles ]; $qte_bougies = $_POST[ qte_bougies ];?> Ce code crée trois nouvelles variables ($qte_pneus, $qte_huiles et $qte_bougies) et les définit de manière qu elles contiennent les données envoyées via la méthode POST du formulaire. Pour que le script ait un effet visible, ajoutez les lignes de code suivantes à la fin de votre script PHP : echo <p>récapitulatif de votre commande :</p> ; echo $qte_pneus. pneus<br /> ; echo $qte_huiles. bidons d\ huile<br /> ; echo $qte_bougies. bougies<br /> ; À ce stade, vous n avez pas vérifié le contenu des variables afin de vous assurer que les valeurs entrées dans chaque champ de formulaire soient cohérentes. Essayez d entrer de manière délibérée des données erronées et observez ce qui se passe. Après avoir lu la suite de ce chapitre, vous souhaiterez peut-être ajouter à ce script du code pour la vali dation des données. ATTENTION Utiliser directement les données de l utilisateur pour les afficher dans le navigateur comme ici est une opération risquée du point de vue de la sécurité. Vous devriez filtrer ces données comme on l explique au Chapitre 4. Les problèmes de sécurité sont présentés au Chapitre 14. Si vous chargez le fichier ainsi créé dans votre navigateur, le script affichera une sortie comme celle de la Figure 1.4. Les valeurs affichées dépendent évidemment de celles qui ont été entrées dans le formulaire. Figure 1.4 Les variables saisies par l utilisateur dans le formulaire sont facilement accessibles dans proces sorder.php.

28 PHP & MySQL Les quelques points intéressants à relever à propos de cet exemple sont examinés dans les sous-sections qui suivent. Concaténation de chaînes Dans ce script, la fonction echo sert à afficher la valeur saisie par l utilisateur dans chacun des champs du formulaire, suivie d un texte indiquant la signification de la valeur affichée. Examinez attentivement les instructions echo : le nom de la variable et le texte qui le suit sont séparés par un point (.), comme dans la ligne de code suivante : echo $qte_pneus. pneus<br> ; Le caractère point représente ici l opérateur de concaténation de chaînes et s utilise pour accoler des chaînes de caractères (des fragments de texte) les unes aux autres. Vous y aurez souvent recours lorsque vous enverrez au navigateur des données en sortie avec echo car la concaténation de chaînes permet d éviter la répétition des commandes echo. Toutes les variables simples peuvent également être insérées dans des chaînes encadrées par des apostrophes doubles passées à la fonction echo (les tableaux sont plus délicats à prendre en charge et c est pourquoi nous nous intéresserons à la combinaison des tableaux et des chaînes au Chapitre 4). Par exemple : echo "$qte_pneus pneus<br />"; Cette ligne équivaut à l instruction présentée plus haut. Chacun de ces deux formats est correct et le choix de l un ou l autre est surtout une affaire de goût personnel. Le proces sus qui consiste à remplacer un nom de variable par sa valeur dans une telle chaîne est appelé "interpolation". Cette fonctionnalité est spécifique aux chaînes entre apostrophes doubles : elle ne fonctionne pas avec les chaînes entre apostrophes simples de cette manière. Si vous exécutez la ligne de code suivante : echo $qte_pneus pneus<br /> ; le navigateur affichera simplement "$qte_pneus pneus<br />". Lorsque la variable est encadrée par des apostrophes doubles, son nom est remplacé par sa valeur. Si elle est placée entre des apostrophes simples, son nom, ou tout autre texte, est envoyé tel quel au navigateur. Variables et littéraux La variable et la chaîne concaténées l une avec l autre dans chacune des instructions echo sont deux entités de nature différente. Une variable est un symbole représentant des données, tandis qu une chaîne constitue les données elles-mêmes. Lorsque des

Chapitre 1 PHP : les bases 29 données brutes sont spécifiées directement dans un programme, comme c est le cas dans l exemple considéré ici, les données sont qualifiées de "littérales", pour marquer la différence avec une variable. $qte_pneus est une variable, c est-à-dire un symbole dési gnant les données saisies par le client. En revanche, pneus<br /> est un littéral (cette chaîne n a pas besoin d être interprétée pour être envoyée au navigateur). Nous n en avons pas tout à fait fini sur ce point. Dans la dernière instruction citée, PHP remplace dans la chaîne le nom de variable $qte_pneus par la valeur stockée dans la variable. Nous avons déjà mentionné deux types de chaînes : celles encadrées par des apostro phes doubles et celles encadrées par des apostrophes simples. PHP tente d évaluer les chaînes entre apostrophes doubles, ce qui conduit au résultat du traitement de l instruc tion précédente. Les chaînes placées entre apostrophes simples sont traitées comme des littéraux. Il existe également un troisième type de chaîne : les "documents sur place". Leur syntaxe (<<<) est familière aux utilisateurs de Perl et a été ajoutée à PHP 4. Elle permet de spécifier des chaînes longues de manière soignée, en utilisant un marqueur de fin qui sera utilisé pour terminer la chaîne. L exemple suivant crée et affiche une chaîne de trois lignes : echo <<<FIN ligne 1 ligne 2 ligne 3 FIN Le lexème FIN est entièrement arbitraire, mais il ne doit pas apparaître dans le contenu de la chaîne. Pour fermer un document sur place, il suffit de placer le lexème au début d une ligne. Les documents sur place sont interpolés, comme les chaînes entre apostrophes doubles. Identificateurs Les noms des variables sont des identificateurs (tout comme les noms de fonctions et de classes les fonctions et les classes sont traitées aux Chapitres 5 et 6). Le choix des identificateurs doit être effectué en respectant quelques règles simples : La longueur d un identificateur n est pas limitée. Un identificateur peut se compo ser de lettres, de nombres et de blancs soulignés. Un identificateur ne peut pas commencer par un chiffre. En PHP, les identificateurs sont sensibles à la casse (à la présence de minuscules et de majuscules). $qte_pneus est un identificateur différent de $Qte_Pneus. Le