La référence sn o u s t e n ons s promes des lasermètres e ...
les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05...
Transcript of les Cahiers Programmeur PHP/MySQL et JavaScript · PDF filePDT_11678_PSPJavaScript 10/05/05...
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
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
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
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