Active Server Pages (ASP)
Objets ASP
|
Le 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, ...).
L'objet Request possède plusieurs collections, une propriété et une méthode :
| Collections | Propriétés | Méthodes |
|---|---|---|
| ClientCertificate | TotalBytes | BinaryRead |
| Cookies | ||
| Form | ||
| QueryString | ||
| ServerVariables |
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.
Pour 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.
http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2...
Il est possible de lire les informations transmises à la page cible avec une seule et unique méthode et ce quelle que soit la méthode d'envoi (GET ou POST).
Par exemple :
dim sParam1 : sParam1 = Request("Param1")
dim sParam2 : sParam2 = Request("Param2")
Cela est très pratique lorsqu'une même page peut être appelée par un formulaire en GET et un autre en POST.
La 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>
Alors 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 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 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 :
| Nom de l'en-tête | Description |
|---|---|
| ALL_HTTP | Tous les en-têtes HTTP envoyés par le client. |
| ALL_RAW | Tous les en-têtes HTTP envoyés par le client sans formatage (de façon brute). |
| APPL_MD_PATH | Chemin précisé dans la balise <Base>. |
| APPL_PHYSICAL_PATH | Chemin physique (sur le serveur) associé à celui précisé dans la balise <Base>. |
| AUTH_PASSWORD | Mot de passe saisi lors d'une authentification HTTP. |
| AUTH_TYPE | Type d'authentification retenue par le serveur (basic ou digest). |
| AUTH_USER | Nom d'utilisateur saisi lors d'une authentification HTTP. |
| CONTENT_LENGTH | Longueur (en octets) du corps de la requête. |
| CONTENT_TYPE | Type de contenu du corps de la requête (par exemple text/html). Voir types MIME. |
| HTTP_ACCEPT | Valeur de la directive Accept du protocole HTTP. |
| HTTP_ACCEPT_ENCODING | Valeur de la directive Accept-Enconding du protocole HTTP. |
| HTTP_ACCEPT_LANGUAGE | Langage attendu par le browser (anglais par défaut). |
| HTTP_COOKIE | Chaîne correspondant aux éventuels cookies du client. |
| HTTP_HOST | Information sur le nom de la machine du client. |
| HTTP_REFERER | URL de la page ayant mené à la présente page via un lien hypertexte. |
| HTTP_USER_AGENT | Chaîne donnant des informations sur le client, comme le nom et la version du navigateur, et éventuellement le système d'exploitation. |
| HTTPS | Indique si le client est en connexion sécurisée ou non (la valeur est ON ou OFF). |
| REFERER | URL du lien à partir duquel la requête a été effectuée. |
| REMOTE_ADDR | Adresse IP du client. |
| REMOTE_HOST | Nom de la machine du client. |
| REQUEST_METHOD | Type de méthode utilisée par le client (i.e. POST ou GET). |
| SCRIPT_NAME | Chemin relatif du script en cours d'exécution (par rapport à la racine du serveur web). |
| SERVER_PROTOCOL | Version du protocole HTTP utilisé par le serveur. |
| SERVER_SOFTWARE | Nom et version du serveur HTTP. |
| URL | URL présente dans la requête. |
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 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 :
| Clé | Description |
|---|---|
| Certificate | Il s'agit d'une chaîne contenant l'intégralité du contenu du certificat en format binaire. |
| Flags | Il s'agit d'un drapeau permettant de savoir si un certificat est présent dans la requête du client (il est alors égal à 1 ou plus exactement à ceCertPresent). Il permet également de dire si l'utilisateur qui envoie le certificat est connu. Dans le cas contraire il envoie la valeur 2 (ceUnrecognizedIssuer). |
| Issuer | Il s'agit d'un champ contenant des informations concernant l'émetteur du certificat. Utilisé sans suffixe, le champ retourné est un ensemble de valeurs séparées par des virgules. Le fait de spécifier un suffixe permet de faire référence à une donnée particulière (la liste des suffixes est précisée dans le tableau suivant). |
| SerialNumber | Il s'agit du numéro de série du certificat, une chaîne ASCII composée de nombres hexadécimaux séparés par des tirets. |
| Subject | Ce champ contient des informations concernant le sujet même du certificat. Utilisé sans suffixe, comme pour le champ Issuer, le champ retourné est un ensemble de valeurs séparées par des virgules. Le fait de spécifier un suffixe permet de faire référence à une donnée particulière (la liste des suffixes est précisée dans le tableau suivant). |
| ValidFrom | Le champ ValidFrom précise la date à partir de laquelle le certificat devient valide. Le format de ce champ dépend du paramétrage du serveur dans la mesure où il suit le format VBScript. |
| ValidUntil | Le champ ValidUntil précise la date d'expiration du certificat. Le format de ce champ est identique à celui du champ ValidFrom. |
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) :
| Suffixe | Description |
|---|---|
| C | Pays d'origine. |
| CN | Nom usuel de l'utilisateur. |
| GN | Nom donné de l'utilisateur. |
| I | Initiales de l'utilisateur. |
| L | Localité de l'utilisateur. |
| O | Compagnie ou organisation. |
| OU | Unité organisationnelle. |
| S | Etat ou province. |
| T | Titre de l'utilisateur. |
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 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.
La syntaxe de la méthode BinaryRead() est la suivante :
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 %>
| 23/07 15h00 | Renseignements sur Acer Aspire 1804 WSMi | 8 |
| 20/07 10h25 | Problème avec acer aspire 7520 G | 4 |
| 19/07 11h52 | Aspiratuer de site web | 4 |
| 13/07 20h12 | Acer aspire one clavier en anglais | 10 |
| 10/07 20h48 | Crysis avec ACER Aspire 8920 | 9 |
![]() | ASPI Drivers - Le fichier wnaspi32.dll représente un pilote ASPI permettant à des logiciels de gravure de reconnaitre et de manipuler des... | Catégorie: Gravure Licence: Freeware/gratuit |
![]() | Vista Inspirat - Le BricoPack Vista Inspirat est un pack gratuit qui permet de modifier les fichiers systèmes de Windows XP afin de lui... | Catégorie: Personnalisation Licence: Freeware/gratuit |
![]() | HTTrack - HTTrack est un aspirateur de site très puissant et open source. Ses nombreuses options de configuration en font un outil de... | Catégorie: Aspirateurs de site Licence: Open Source |
![]() | MediaInfo - MediaInfo fournit la liste des codecs nécessaires ainsi que des informations techniques sur vos fichiers vidéo et audio. ... | Catégorie: Codecs Licence: Open Source |
![]() | Acer AspireT135 AMD Sempron | Catégorie: Ordinateur de bureau | |
![]() | Acer Aspire1363WLMi | Catégorie: Ordinateur portable | |
![]() | Event ASP6 | Catégorie: Enceintes | |
![]() | Acer AspireT671 Intel Core | Catégorie: Ordinateur de bureau |