les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05...

4
les Cahiers du Programmeur PHP/MySQL et JavaScript Philippe Chaléat Daniel Charnay Jean-René Rouet Avec la contribution de Gaël Thomas

Transcript of les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05...

Page 1: les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05 15:46 Page 3. ... Aller plus loin avec les bases de données : les promes-ses du mapping

les Cahiersdu Programmeur

PHP/MySQL etJavaScript

Philippe ChaléatDaniel Charnay

Jean-René Rouet

Avec la contribution de Gaël Thomas

PDT_11678_PSPJavaScript 10/05/05 15:46 Page 3

Page 2: les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05 15:46 Page 3. ... Aller plus loin avec les bases de données : les promes-ses du mapping

Table des matières

PRÉSENTATION ............................................................... 1Une interface proche de l’utilisateur (ateliers 1 à 7) • 2Une interface paramétrable (ateliers 8 et 9) • 2Solutions avancées (ateliers 10 à 15) • 2Sécurisez ! (atelier 16) • 3Installations (annexe A) • 3Et de Windows à Unix (annexe B) • 3

1. RAPPEL SUR LE SCRIPTING ............................................ 5

2. AIDE EN LIGNE ............................................................... 9Cahier des charges • 10Construction d’un modèle d’aide • 11Programmation • 12

Ouvrir la fenêtre d’aide • 12Fermer la fenêtre d’aide • 12La fonction d’aide et le positionnement des appels • 13

Le code pour tester • 14Le fichier index.html • 14Le fichier aide.html • 16

3. MULTIFENÊTRAGE (1) .................................................. 19La notion de fenêtre principale • 20Ouvrir la fenêtre principale • 22Chef d’orchestre : la fenêtre principale • 23Le référencement d’objets entre fenêtres • 23Tester l’existence d’une fenêtre • 24Fermer les fenêtres • 25Exemple de communication entre fenêtres • 26

4. MULTIFENÊTRAGE (2), L’ALTERNATIVE DES CALQUES 33Utiliser OVERLIB pour gérer l’affichage ponctuel d’un objet • 34La communication entre les objets de la page et ceux du calque • 36OVERLIB pour une aide contextuelle • 39

5. ERGONOMIE : L’APPORT DES CSSSUR UN FORMULAIRE ................................................... 41Un formulaire « adaptatif » • 42Les balises et propriétés spécifiques utilisées • 42

6. AIDE ET CONTRÔLES DE SAISIE ................................... 49Le champ « entrée texte » • 50Les champs préremplis • 51

Champ texte contraint à deux valeurs • 51Champ prépositionné pour la modification • 52

Champs contrôlés • 52L’événement « clavier » • 52Saisie limitée à un nombre maximal de caractères • 53Champ n’acceptant que des valeurs numériques • 55Champ contrôlé et autocomplété • 55Champ insaisissable, le champ <output> • 57Réponse limitée dans le temps • 58Tester une adresse e-mail • 60

Avant de lancer le formulaire • 61En arrivant sur le serveur… • 62

7. LISTES DE VALEURS ..................................................... 65Liste chargée à la demande • 66

Cahier des charges • 67La librairie JavaScript • 68Le formulaire • 68La liste de valeurs • 69Le résultat • 71Positionnement automatique • 73

Liste chargée à la demande avec filtre de recherche • 75Cahier des charges • 76La librairie JavaScript • 77Le formulaire • 77Le script PHP de génération de la liste de valeurs • 78Aller plus loin avec les bases de données : les promes-ses du mapping objet/relationnel • 80

En résumé • 83

Page 3: les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05 15:46 Page 3. ... Aller plus loin avec les bases de données : les promes-ses du mapping

Les

Cahi

ers

du p

rogr

amm

eur P

HP/J

avaS

crip

t

VIII

8. LES TEMPLATES ............................................................ 85Cahier des charges • 86Mise en œuvre • 88Écriture de code Smarty • 88

Préparation des répertoires d’hébergement • 88Programmation PHP • 89Écriture de templates • 92

Insertion de la valeur d’une variable • 92Variables pré-instanciées • 93Manipulations avancées • 95

Un exemple pratique • 97En résumé • 101

9. TEMPLATES ET WAP ................................................. 103Extension du cahier des charges • 104WAP et Smarty • 104Réalisation • 105En résumé • 107

10. TRANSFERT DE FICHIERS .......................................... 109Rappel : la balise <input type=file> • 110Transférer un fichier depuis le poste client, vers le serveur • 111Côté client, quelle ergonomie apporter ? • 112

Générer les balises d’upload à la demande, sans recours au serveur • 112Tester les types de fichiers attendus • 114Essayer de « relooker » la balise d’upload ? • 115

Paramétrer le serveur • 116Stocker des fichiers • 117

11. E-MAIL ET ANNUAIRE .............................................. 119Générer un e-mail en PHP • 120Utilisons LDAP • 120Assister la saisie d’une adresse à l’aide d’un annuaire LDAP • 121

Utiliser un frame caché • 122La partie visible • 123Le programme d’interrogation de l’annuaire • 124

12. ACCUSÉ DE RÉCEPTION ............................................ 129Confirmer la soumission effectuée • 130Récapituler dans une page HTML avec un bouton Imprimer • 130PDF et PHP • 131Générer un document PDF • 132

Décrire des boîtes • 132Mise en place des boîtes • 133

Génération du document « accusé de réception » • 134

13. SESSIONS ET TRANSACTIONS .................................. 137Comprendre le mécanisme des sessions • 139

Méthode GET et méthode POST • 140Terminer une session • 141Contrôler la durée d’une session • 141Le code pour « tout » tester • 142Application : session contrôlée par identification et mot de passe • 143Exemple complet • 144

La base de données • 144Les scripts • 147

14. UTILISER DES SERVICES WEB AVEC CURL .............. 155Interconnecter des applications web étrangères • 156

Exemple de traduction d’un texte • 156Au-delà de cet exemple • 159

15. CONSOMMER DES SERVICES WEB ........................... 161Naissance des services web et de SOAP • 162Les échanges en format universel avec XML, grâce à SOAP/HTTP • 163WSDL, Web Services Description Language • 165L’API Google : des services web pour rechercher sur Internet • 166NuSOAP, une librairie SOAP pour PHP • 168

Gestion des erreurs • 170Cahier des charges • 171

La réalisation • 171En résumé • 173

16. COMMENT SÉCURISER SON APPLICATION ? ........... 175Paramètres d’entrée • 176

Comment fait la personne malveillante ? • 177Un exemple de code vulnérable • 177Comment se protéger ? • 178Un pare-feu applicatif typique • 178

Renforcer le contrôle d’accès • 181Vol de session et authentification • 182

Protéger les sessions • 182Protéger l’authentification • 183

Failles XSS (cross-site scripting) • 184Débordement de tampon • 185Failles d’injection • 185Risques inhérents au traitement d’erreur • 186Sécuriser le stockage des informations sensibles • 188Déni de service • 188Sécuriser la gestion de configuration • 189Comment améliorer mon code ? • 189

Page 4: les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05 15:46 Page 3. ... Aller plus loin avec les bases de données : les promes-ses du mapping

Tabl

e de

s m

atiè

res

IX

ANNEXE A. INSTALLATIONS ............................................ 191Organisation des fichiers • 192Le serveur web : Apache • 193

Installation • 193Configuration • 194Test • 194

Le langage de développement PHP • 195Installation • 195

PHP comme module Apache • 195PHP comme programme CGI • 195

Configuration • 196Test des modifications de php.ini • 197Test de PHP • 197

Un optimiseur PHP : Zend Optimizer • 198Installation • 198Test • 198

Le moteur de templates : Smarty • 199Installation • 199Configuration • 199Test • 199

La base de données relationnelle : MySQL • 200Installation • 200Configuration • 201Test • 201

L’outil d’administration de MySQL : phpMyAdmin • 201

Installation • 201Configuration • 202Test • 203

ANNEXE B. DE WINDOWS À UNIX : RECOMMANDATIONS ................................................. 205Attention à la casse • 206

PHP et HTML • 206MySQL • 207

La configuration de PHP • 207La configuration de PHP et MySQL • 208

INDEX .............................................................................. 209