Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
090_applicatifs:210http:030_page_active [le 24/03/2025 à 16:32] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 090_applicatifs:210http:030_page_active [le 24/03/2025 à 16:43] (Version actuelle) – [Un exemple trivial] prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~NOCACHE~~ | ||
+ | ====== Les pages « actives » ====== | ||
+ | Nous allons maintenant jouer un peu avec quelques possibilités qui font parfois peur... | ||
+ | |||
+ | ===== Votre navigateur parle dans votre dos... ===== | ||
+ | |||
+ | Lorsque nous partons visiter un site web, nous indiquons l'URI de la page que nous souhaitons lire (la page d' | ||
+ | |||
+ | En langage HTTP notre navigateur va donc effectuer un "GET < | ||
+ | |||
+ | <php> | ||
+ | echo '< | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | echo '< | ||
+ | gethostbyaddr(getenv(' | ||
+ | '</ | ||
+ | |||
+ | echo '< | ||
+ | getenv(' | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | echo '< | ||
+ | |||
+ | echo '</ | ||
+ | |||
+ | echo '</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Par quel prodige ? ==== | ||
+ | |||
+ | Ce n'est pas un prodige. Cette page est **dynamique**. Les informations qu' | ||
+ | |||
+ | Il existe de nombreux moyens de construire des contenus dynamiques du côté serveur. Ce que vous recevez ici n'est que du HTML que vous pouvez observer en demandant à votre navigateur de vous montrer le code source de la page. | ||
+ | |||
+ | ===== Les formulaires... ===== | ||
+ | |||
+ | Les formulaires ont pour but de permettre au client d' | ||
+ | |||
+ | Un formulaire peut envoyer ses données de deux manières : | ||
+ | |||
+ | ==== Par la méthode « GET » ==== | ||
+ | |||
+ | Avec cette méthode, les données sont envoyées dans l'URI de la page qui sera appelée lorsque vous cliquerez sur « envoyer ». | ||
+ | |||
+ | Dans le formulaire ci-dessous : | ||
+ | |||
+ | * Le champ de saisie de texte s' | ||
+ | * Le bouton s' | ||
+ | < | ||
+ | | mettez là dedans ce qu'il vous passe par la tête (40 caractères maximum) : |< | ||
+ | | Puis, cliquez sur le bouton « Demander » | < | ||
+ | < | ||
+ | |||
+ | |||
+ | ==== Par la méthode « POST ». ==== | ||
+ | |||
+ | A première vue, les données sont envoyées de façon « invisible ». | ||
+ | |||
+ | Dans le formulaire ci dessus : | ||
+ | |||
+ | * Le champ de saisie de texte s' | ||
+ | * Le bouton s' | ||
+ | < | ||
+ | | remettez là dedans ce qu'il vous passe par la tête (40 caractères maximum) : |< | ||
+ | | Puis, cliquez sur le bouton « Poster » | < | ||
+ | < | ||
+ | |||
+ | ==== Le délicat cas des « cookies » ==== | ||
+ | |||
+ | Un cookie, c'est un petit fichier qu'un serveur HTTP peut écrire (et lire) sur votre machine par l' | ||
+ | |||
+ | HTTP ne sait pas faire cela et ne conserve aucune mémoire du passé si ce n'est l'URI de la page d'où vous venez. C'est un peu faible, surtout si l'on doit gérer des identifications de personnes, par exemple. Dans ces cas là, un cookie permettra de contourner le problème en permettant au serveur de retrouver à chaque page des informations écrites dans ce cookie. | ||
+ | |||
+ | === Un exemple trivial === | ||
+ | |||
+ | Le formulaire suivant vous permet de saisir une information dans un formulaire et de l' | ||
+ | |||
+ | La différence par rapport aux exemples précédents, | ||
+ | |||
+ | < | ||
+ | | mettez dans cette case une information quelconque (40 caractères maximum) : |< | ||
+ | | Puis, cliquez sur le bouton « Envoyer » | < | ||
+ | < | ||
+ | |||
+ | === Explications === | ||
+ | Comme vous en avez l' | ||
+ | |||
+ | < | ||
+ | Ce n'est pas la méthode POST employée dans le formulaire qui va écrire le cookie dans la mémoire de votre navigateur, mais bien la page que ce formulaire invoque, '' | ||
+ | </ | ||
+ | |||
+ | == Commençons par un aperçu sommaire == | ||
+ | < | ||
+ | No. Time Source | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | 9 0.443425 | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | 11 0.471471 | ||
+ | 12 0.471874 | ||
+ | <span class=" | ||
+ | 14 0.474914 | ||
+ | 15 0.474943 | ||
+ | <span class=" | ||
+ | 17 0.476246 | ||
+ | 18 0.476730 | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | 21 8.750822 | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | 24 11.258788 192.168.0.10 | ||
+ | </ | ||
+ | |||
+ | == Plus en détails... == | ||
+ | |||
+ | * La trame 8 ne présente pas d' | ||
+ | * Les trames 10 à 17 représentent quant à elles l' | ||
+ | * La trame 19 commence à nous intéresser. Elle correspond à l' | ||
+ | < | ||
+ | Frame 19 (439 on wire, 439 captured) | ||
+ | ... | ||
+ | Hypertext Transfer Protocol | ||
+ | <span class=" | ||
+ | Accept: */*\r\n | ||
+ | <span class=" | ||
+ | Accept-Language: | ||
+ | Content-Type: | ||
+ | Accept-Encoding: | ||
+ | User-Agent: Mozilla/4.0 (compatible; | ||
+ | Host: gw2.maison.mrs\r\n | ||
+ | Content-Length: | ||
+ | Connection: Keep-Alive\r\n | ||
+ | Cache-Control: | ||
+ | \r\n | ||
+ | |||
+ | Data (25 bytes) | ||
+ | <span class=" | ||
+ | 0010 33 3d 45 6e 76 6f 79 65 72 3=Envoyer | ||
+ | </ | ||
+ | |||
+ | * La trame 20 est intéressante parce qu' | ||
+ | |||
+ | < | ||
+ | Frame 20 (1473 on wire, 1473 captured) | ||
+ | ... | ||
+ | Hypertext Transfer Protocol | ||
+ | HTTP/1.1 200 OK\r\n | ||
+ | Date: Sun, 21 Apr 2002 13:11:11 GMT\r\n | ||
+ | Server: Apache-AdvancedExtranetServer/ | ||
+ | (Mandrake Linux/ | ||
+ | X-Powered-By: | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | Keep-Alive: timeout=15, max=99\r\n | ||
+ | Connection: Keep-Alive\r\n | ||
+ | Transfer-Encoding: | ||
+ | Content-Type: | ||
+ | \r\n | ||
+ | |||
+ | Data (1051 bytes) | ||
+ | <span class=" | ||
+ | 0000 34 30 66 0d 0a 3c 68 74 6d 6c 3e 0d 0a 0d 0a 3c | ||
+ | 0010 68 65 61 64 3e 0d 0a 3c 6d 65 74 61 20 68 74 74 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | * La trame 22 montre comment votre navigateur renvoie docilement votre cookie au serveur à chaque requête qu'il effectuera sur ce serveur.\\ | ||
+ | |||
+ | < | ||
+ | Frame 22 (481 on wire, 481 captured) | ||
+ | ... | ||
+ | Hypertext Transfer Protocol | ||
+ | <span class=" | ||
+ | Accept: image/gif, image/ | ||
+ | <span class=" | ||
+ | Accept-Language: | ||
+ | Accept-Encoding: | ||
+ | User-Agent: Mozilla/4.0 (compatible; | ||
+ | Host: gw2.maison.mrs\r\n | ||
+ | Connection: Keep-Alive\r\n | ||
+ | <span class=" | ||
+ | <span class=" | ||
+ | \r\n | ||
+ | </ | ||
+ | |||
+ | * La trame 23 présente un intérêt tout de même, parce qu' | ||
+ | |||
+ | < | ||
+ | Frame 23 (1127 on wire, 1127 captured) | ||
+ | ... | ||
+ | Hypertext Transfer Protocol | ||
+ | <span class=" | ||
+ | Date: Sun, 21 Apr 2002 13:11:14 GMT\r\n | ||
+ | Server: Apache-AdvancedExtranetServer/ | ||
+ | X-Powered-By: | ||
+ | Keep-Alive: timeout=15, max=98\r\n | ||
+ | Connection: Keep-Alive\r\n | ||
+ | Transfer-Encoding: | ||
+ | Content-Type: | ||
+ | \r\n | ||
+ | |||
+ | Data (774 bytes) | ||
+ | 0000 32 66 61 0d 0a 3c 68 74 6d 6c 3e 0d 0a 0d 0a 3c | ||
+ | 0010 68 65 61 64 3e 0d 0a 3c 6d 65 74 61 20 68 74 74 | ||
+ | 0020 70 2d 65 71 75 69 76 3d 22 43 6f 6e 74 65 6e 74 | ||
+ | 0030 2d 4c 61 6e 67 75 61 67 65 22 20 63 6f 6e 74 65 | ||
+ | 0040 6e 74 3d 22 66 72 22 3e 0d 0a 3c 6d 65 74 61 20 | ||
+ | 0050 68 74 74 70 2d 65 71 75 69 76 3d 22 43 6f 6e 74 | ||
+ | 0060 65 6e 74 2d 54 79 70 65 22 20 63 6f 6e 74 65 6e | ||
+ | 0070 74 3d 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 | ||
+ | 0080 61 72 73 65 74 3d 77 69 6e 64 6f 77 73 2d 31 32 | ||
+ | 0090 35 32 22 3e 0d 0a 3c 6d 65 74 61 20 6e 61 6d 65 | ||
+ | 00a0 3d 22 47 45 4e 45 52 41 54 4f 52 22 20 63 6f 6e | ||
+ | 00b0 74 65 6e 74 3d 22 4d 69 63 72 6f 73 6f 66 74 20 | ||
+ | 00c0 46 72 6f 6e 74 50 61 67 65 20 34 2e 30 22 3e 0d | ||
+ | 00d0 0a 3c 6d 65 74 61 20 6e 61 6d 65 3d 22 50 72 6f | ||
+ | 00e0 67 49 64 22 20 63 6f 6e 74 65 6e 74 3d 22 46 72 | ||
+ | 00f0 6f 6e 74 50 61 67 65 2e 45 64 69 74 6f 72 2e 44 | ||
+ | 0100 6f 63 75 6d 65 6e 74 22 3e 0d 0a 3c 74 69 74 6c | ||
+ | 0110 65 3e 52 e9 73 75 6c 74 61 74 20 64 65 20 6c 61 | ||
+ | 0120 20 6d 61 6e 69 70 3c 2f 74 69 74 6c 65 3e 0d 0a manip& | ||
+ | 0130 3c 21 2d 2d 6d 73 74 68 65 6d 65 2d 2d 3e 3c 6c & | ||
+ | 0140 69 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 ink rel=" | ||
+ | 0150 65 65 74 22 20 68 72 65 66 3d 22 66 69 6c 65 3a | ||
+ | 0160 2f 2f 2f 47 3a 2f 44 4f 43 55 4d 45 7e 31 2f 63 /// | ||
+ | 0170 68 72 69 73 2f 4c 4f 43 41 4c 53 7e 31 2f 54 65 | ||
+ | 0180 6d 70 2f 46 72 6f 6e 74 50 61 67 65 54 65 6d 70 | ||
+ | 0190 44 69 72 2f 6d 73 74 68 65 6d 65 2f 74 61 62 73 | ||
+ | 01a0 2f 74 61 62 73 31 31 31 31 2e 63 73 73 22 3e 0d / | ||
+ | 01b0 0a 3c 6d 65 74 61 20 6e 61 6d 65 3d 22 4d 69 63 | ||
+ | 01c0 72 6f 73 6f 66 74 20 54 68 65 6d 65 22 20 63 6f | ||
+ | 01d0 6e 74 65 6e 74 3d 22 74 61 62 73 20 31 31 31 31 | ||
+ | 01e0 2c 20 64 65 66 61 75 6c 74 22 3e 0d 0a 3c 6d 65 , default"& | ||
+ | 01f0 74 61 20 6e 61 6d 65 3d 22 4d 69 63 72 6f 73 6f ta name=" | ||
+ | 0200 66 74 20 42 6f 72 64 65 72 22 20 63 6f 6e 74 65 ft Border" | ||
+ | 0210 6e 74 3d 22 6e 6f 6e 65 22 3e 0d 0a 3c 2f 68 65 | ||
+ | 0220 61 64 3e 0d 0a 0d 0a 3c 62 6f 64 79 3e 0d 0a 0d | ||
+ | 0230 0a 3c 68 31 3e 52 e9 73 75 6c 74 61 74 20 64 65 | ||
+ | 0240 20 6c 61 20 6d 61 6e 69 70 3a 3c 2f 68 31 3e 0d la manip:& | ||
+ | <span class=" | ||
+ | 0260 69 65 20 65 78 69 73 74 65 20 74 6f 75 6a 6f 75 ie existe toujou | ||
+ | 0270 72 73 20 65 74 20 63 6f 6e 74 69 65 6e 74 20 6c rs et contient l | ||
+ | 0280 61 20 76 61 6c 65 75 72 20 3a 20 3c 62 3e 3c 75 a valeur : & | ||
+ | 0290 3e 63 6f 6f 6b 69 65 3c 2f 75 3e 3c 2f 62 3e 0d & | ||
+ | 02a0 0a 3c 2f 70 3e 0d 0a 0d 0a 3c 68 32 3e 4d 61 69 | ||
+ | 02b0 73 20 71 75 65 20 73 27 65 73 74 2d 69 6c 20 70 s que s' | ||
+ | 02c0 61 73 73 e9 20 64 61 6e 73 20 74 6f 75 74 20 e7 ass. dans tout . | ||
+ | 02d0 61 20 3f 3c 2f 68 32 3e 0d 0a 3c 70 3e 26 6e 62 a ?& | ||
+ | 02e0 73 70 3b 3c 2f 70 3e 0d 0a 0d 0a 3c 2f 62 6f 64 | ||
+ | 02f0 79 3e 0d 0a 0d 0a 3c 2f 68 74 6d 6c 3e 0d 0a 0d | ||
+ | 0300 0a 30 0d 0a 0d 0a | ||
+ | </ | ||
+ | |||
+ | ===== Conclusions ===== | ||
+ | |||
+ | Nous avons vu quelques exemples de ce que l'on peut faire avec : | ||
+ | |||
+ | * Un client qui envoie des données volontairement ou non, à un serveur. | ||
+ | * Un serveur qui exploite ces données au moyen de scripts, ici en PHP. | ||
+ | |||
+ | Nous n' | ||
+ | |||
+ | Dans tout ce que nous avons vu ici, le « dynamisme » des pages venait exclusivement du serveur, et le client se contente d' |
Les pages « actives »: Dernière modification le: 01/01/1970 à 00:00 par