|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ASP - L'objet RequestPrésentation de l'objet RequestLe rôle de l'objet Request est de permettre de récupérer la requête HTTP envoyée par le client au serveur, c'est-à-dire qu'il permet en réalité de manipuler l'ensemble des informations envoyées par le navigateur du visiteur (page demandée, nom et version du navigateur, cookies stockés sur le disque du client, adresse IP du client, ...). Les constituants de l'objet RequestL'objet Request possède plusieurs collections, une propriété et une méthode :
La majorité des propriétés et des méthodes de l'objet Request correspondent à des fonctions ou propriétés permettant de manipuler les champs de la requête HTTP. La réception de donnéesPour comprendre comment utiliser l'objet Request, il est nécessaire de connaître la manière de laquelle les données sont envoyées au navigateur grâce à la requête HTTP. Pour cela réferrez-vous à la section « formulaire HTML ». L'envoi de données à un script CGI se fait par l'intermédiaire d'un formulaire HTML. Les formulaires HTML se créent à l'aide de la balise <FORM> contenant des boutons, des champs, des listes et/ou des cases à cocher repérés par des noms auxquels seront associés des valeurs, fonction de la saisie des utilisateurs, puis d'un bouton de soumission du formulaire qui enverra l'ensemble des informations au script indiqué en tant qu'attribut Action de la balise FORM selon la méthode GET ou POST. Chaque élément du formulaire doit posséder un nom unique, de telle façon que la valeur associée à l'élément forme avec le nom de celui-ci une paire nom/valeur du type : Nom_de_l_element=valeur L'ensemble des paires nom/valeur sont séparées par des esperluettes (le caractère « & »). Ainsi, l'envoi d'un formulaire crée une chaîne de la forme : champ1=valeur1&champ2=valeur2&champ3=valeur3 L'envoi de cette chaîne se fera différemment selon que la méthode utilisée pour l'envoi du formulaire est GET ou POST.
La collection QueryStringLa collection QueryString permet de récupérer la chaîne de requête envoyée par le client, c'est-à-dire les paires clés/valeurs présentes dans l'URL après le point d'interrogation. Prenons par exemple l'URL suivante : http://www.commentcamarche.net/asp/caddie.asp?param=12&nom=Jeff La chaîne de requête est ainsi la suivante : param=12&nom=Jeff param et nom sont ici des champs (parfois appelés clés) et leurs valeurs respectives sont 12 et Jeff. Voici la syntaxe de la collection QueryString : <%@ LANGUAGE="VBSCRIPT" %> <% Request.QueryString("Champ")[(Index)|.Count] %>
Ainsi, la récupération de la variable nom dans l'exemple ci-dessus se fera grâce à l'instruction suivante : <% Request.QueryString("nom") %> Dans le cas où le formulaire possède plusieurs éléments de même nom (c'est le cas des cases à cocher et des menus à multiples sélections), il est possible de parcourir les éléments grâce aux paramètres index et count de la collection QueryString. Soit le formulaire suivant : <FORM action="mes_loisirs.asp" method="get"> <BR><INPUT type="checkbox" name="choix" value="musique"> musique <BR><INPUT type="checkbox" name="choix" value="cinéma"> cinéma <BR><INPUT type="checkbox" name="choix" value="sport"> sport <BR><INPUT type="checkbox" name="choix" value="théâtre"> théâtre <BR><INPUT type="submit" value="Valider la sélection"> </FORM> Il est possible d'afficher le nombre de choix sélectionnés, ainsi que de les lister de la façon suivante dans le fichier mes_loisirs.asp (valeur de l'attribut action du formulaire ci-dessus ; le fichier mes_loisirs.asp pouvant être le même fichier que celui contenant le formulaire). <% Response.Write "J'ai sélectionné " & Request.QueryString("choix").Count & " loisirs : <BR>" for i = 1 to Request.QueryString("choix").Count Response.Write "<BR>" & Request.QueryString("choix")(i) next %> Il est possible d'afficher tous les champs d'un formulaire en utilisant la clause For Each du VBScript, qui permet de parcourir l'ensemble des enregistrements d'une collection. Voici un script qui affiche l'ensemble des valeurs associées aux champs d'un formulaire après envoi au serveur : <%@ LANGUAGE="VBSCRIPT" %> <% For Each Champ in Request.QueryString Response.write(Champ & " = " & Request.QueryString(Champ)) Next %> <BR> Enfin pour afficher tous les champs, et les valeurs prises par chaque champ, voici un exemple de code : <%@ LANGUAGE="VBSCRIPT" %> <% For Each Champ in Request.QueryString Response.write("<P>" & Champ & " : " & Request.QueryString(Champ)) For i = 1 to Request.QueryString(Champ).Count Response.Write("<BR>Valeur numéro " & Request.QueryString("choix").Count & ": " & Request.QueryString(Champ)(i)) Next Next %> <BR> La collection FormAlors que la collection QueryString permet de récupérer de façon simple les données envoyées au script ASP par l'intermédiaire de l'URL (ou plus exactement par la méthode GET du protocole HTTP), la collection Form permet de manipuler les données envoyées par un formulaire en utilisant la méthode POST. La collection Form permet de récupérer la valeur associée à un champ par la syntaxe suivante : <%@ LANGUAGE="VBSCRIPT" %> <% Request.Form("Champ") %> Ainsi pour afficher tous les champs d'un formulaire, il est possible, comme pour la collection QueryString, d'utiliser la clause For Each du VBScript, permettant de parcourir les enregistrements d'une collection. Voici un script qui affiche l'ensemble des valeurs associées aux champs d'un formulaire après envoi au serveur : <%@ LANGUAGE="VBSCRIPT" %> <% For Each Champ in Request.Form %> <% Response.write(Champ + " = ") Response.write(Request.Form(Champ)) %> <%BR%> <% Next %> La collection CookiesLa collection Cookies permet de récupérer les valeurs d'un cookie, c'est-à-dire un fichier présent sur le disque du client contenant des données envoyées par le serveur (un cookie peut être créé grâce à l'objet Response). L'accès aux données d'un cookie se fait de la manière suivante : <%@ LANGUAGE="VBSCRIPT" %> <% Variable = Request.Cookies("NomCookie")("Element") %> Il est possible de parcourir l'ensemble des cookies par le script suivant : <%@ LANGUAGE="VBSCRIPT" %> <% For Each Element in Request.Cookies %> <% Response.write(Element + " = ") Response.write(Request.Cookies(Element)) %> <BR> <% Next %> La collection ServerVariablesLa collection ServerVariables de l'objet Request contient les en-têtes HTTP de la requête, pouvant parfois donner des informations très utiles sur les visiteurs ou le nom et la version du navigateur du client... La syntaxe pour récupérer ces en-têtes est la suivante : Request.ServerVariables("NOM-EN-TETE") Voici les principaux en-têtes pouvant être utiles :
Pour compter les visiteurs d'un site en ne retenant que les nouveaux, il peut être intéressant de stocker l'adresse IP de ces derniers si celle-ci ne figure pas dans la liste déjà enregistrée. Voici le code permettant de stocker dans une variable l'adresse IP d'un visiteur, et qui l'affiche : <%@ LANGUAGE="VBSCRIPT" %> <% IP = Request.ServerVariables("REMOTE_ADDR") Response.write("Votre adresse IP est : " + IP) %> <BR> La collection ClientCertificateLa collection ClientCertificate contient l'ensemble des enregistrements contenus dans le certificat d'authentification envoyé par le client au serveur dans la requête HTTP lors d'une connexion via SSL, c'est-à-dire lors d'une requête dont l'URL commence par https:// au lieu de http://. Afin de pouvoir utiliser correctement cette collection, le navigateur du client doit être capable d'envoyer des certificats et le serveur doit supporter SSL. Dans le cas contraire, la collection ClientCertificate renvoie la valeur EMPTY. La syntaxe de cette collection est la suivante : Request.ClientCertificate(Cle[Suffixe])
Voici l'ensemble des champs du certificat qu'il est possible de récupérer grâce à la collection ClientCertificate :
Voici l'ensemble des suffixes pouvant éventuellement être utilisés avec les champs Issuer et Subject du certificat (par exemple IssuerC donnera le pays de l'émetteur du certificat) :
Il est ainsi possible d'afficher le nom de l'utilisateur qui a émis le certificat de la façon suivante : <%= Request.ClientCertificate("IssuerCN") %> Le script suivant affiche l'intégralité des champs contenus dans le certificat : <% Const ceCertPresent = 1 Const ceUnrecognizedIssuer = 2 If Request.ClientCertificate("Flags") = ceCertPresent Then For Each cle in Request.ClientCertificate Response.Write cle & " = " & Request.ClientCertificate(cle) & "<br>" Next Else Response.Write "Le client n'a pas de certificat ou est inconnu" End If %> La méthode BinaryRead()La collection Post permet de manipuler la plupart des informations contenues dans la requête du client. Toutefois certaines informations, comme par exemple les données binaires envoyées par le client lors de l'envoi d'un fichier (en anglais upload), ne peuvent être traitées par la seule collection Form. Ainsi, la méthode BinaryRead() de l'objet Request permet de
récupérer les données brutes envoyées dans une requête POST. A l'inverse,
la méthode BinaryWrite() de l'objet Response permet de créer le corps de la réponse HTTP.
Request.BinaryRead(n)
L'exemple suivant illustre la façon basique de récupérer le corps de la requête POST : <% Dim DonneesPost, Compteur Compteur = Request.TotalBytes DonneesPost = Request.BinaryRead(Compteur) if DonneesPost != 0 Response.BinaryWrite(DonneesPost) end if %> Plus d'informationDiscussions pertinentes trouvées dans le forum
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||