Les objets ASP

 L'objet Response

Le rôle de l'objet Response est de permettre de créer la réponse HTTP qui va être envoyée au navigateur, c'est-à-dire la page Web demandée par le client. Il permet de manipuler l'ensemble des informations à destination du navigateur du client, comme par exemple l'écriture de cookies...

L'objet Response possède une seule collection et de nombreuses propriétés et méthodes dont majorité correspondent à des champs de la réponse HTTP.

Objet Response

Collections

Methodes

Propriétés

Cookies

Buffer

AddHeader

 

CacheControl

AppendToLog

 

CharSet

BinaryWrite

 

ContentType

Clear

 

Expires

End

 

ExpiresAbsolute

Flush

 

isClientConnected

Redirect

 

Status

Write

 

PICS

 

Pour envoyer du texte au navigateur dans un code ASP, il suffit d'utiliser la propriété write de l'objet Response, voici un exemple simple montrant comment utiliser cette propriété:

<%@ LANGUAGE="VBSCRIPT" %>

<HTML>

<HEAD>

<TITLE>Exemple de script ASP</TITLE>

</HEAD>

<BODY>

<% Response.write("Bonjour") %>

</BODY>

</HTML>

Ce script est totalement inutile dans la mesure ou un simple fichier HTML pourrait donner le même résultat. L'intérêt de cette méthode est de pouvoir gérer des variables ainsi que des chaînes:

<%@ LANGUAGE="VBSCRIPT" %>

<HTML>

<HEAD>

<TITLE>Exemple de script ASP</TITLE>

</HEAD>

<BODY>

<% for i=1 to 10

   Response.write("Compte a rebours: " & 10 - i & "<br>")

Next %>

</BODY>

</HTML>

La méthode Write() gère la conversion des données entrées en paranètre en chaîne de caractère utilisant le jeu de caractère par défaut du serveur. Pour envoyer des données binaires, il est possible d'utiliser la méthode BinaryWrite()

1.1.1.2     L'envoi de cookies au navigateur

L'objet Response, outre la possibilité d'envoyer une page Web au navigateur du client, permet aussi d'envoyer des cookies à celui-ci, c'est-à-dire de stocker des données dans un fichier du client sous la forme de paires nom/valeur. L'objet Response fournit la collection cookies pour effectuer les opérations d'envoi de cookies au navigateur.

Le protocole HTTP permet de spécifier les valeurs de cookies dans les en-têtes HTTP, l'envoi de cookies au navigateur dans la page ASP doit donc se faire avant tout envoi dans le corps de la réponse.

Pour stocker une valeur dans un cookie apelé CCMCookie, il suffit d'utiliser la commande suivante:

<%@ LANGUAGE="VBSCRIPT" %>

<% response.cookies("CCMCookie") = "Valeur" %>

Pour stocker plusieurs valeurs associées à des index dans un cookie apelé CCMCookie, il suffit d'utiliser la commande suivante:

<%@ LANGUAGE="VBSCRIPT" %>

<% response.cookies("CCMCookie")("Index1") = "Valeur1"

<% response.cookies("CCMCookie")("Index2") = "Valeur2"

<% response.cookies("CCMCookie")("Index3") = "Valeur3"

...

%>

En réalité, le cookie ainsi créé n'aura qu'une durée limité à celle de l'utilisation du navigateur, cela signifie qu'il sera effacé à la fermeture de celui-ci. Pour y remédier, il suffit de définir la propriété expires, qui définit la "date limite de péremption du gâteau".

<% response.cookies("CCMCookie").expires = #4/18/2000#

La collection cookies possède d'autres propriétés que expires:

domain définit le nom du serveur pour lequel les valeurs du cookie sont accessibles

path définit le chemin sur le serveur pour lequel les valeurs du cookie sont accessibles

secure permet d'indiquer que le cookie ne peut être envoyé que lors d'une connexion sécurisée (SSL,S-HTTP,...)

L'objet Request

Le rôle de l'objet Request est de permettre de récupérer la réponse HTTP envoyée par le navigateur au serveur, c'est-à-dire la page Web demandée par le client. Il possède une seule collection et de nombreuses propriétés et méthodes:

Objet Request

Collections

Methodes

Propriétés

ClientCertificates

TotalBytes

BinaryRead

Cookies

 

 

Form

 

 

QueryString

 

 

ServerVariables

 

 

La majorité des propriété et des méthodes de l'objet Request correspondent à des fonctions ou propriétés permettant de manipuler les champs de la requete HTTP.

La réception des données se fait différemment selon que la méthode utilisée pour l'envoi du formulaire est GET ou POST.

La méthode GET permet d'envoyer les éléments du formulaire au travers de l'URL du script, en ajoutant l'ensemble des paires nom/valeur à l'URL du script, séparé de celui-ci par un point d'interrogation, ce qui donne un URL du type:

http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2...

Toutefois, la longueur de la chaîne URL étant limitée à 255 caractères, les informations situées au-delà de cette limite seront irrémédiablement perdues. De plus, cela crée une URL surchargée dans la barre d'adresse d'un navigateur et peut dévoiler des informations sensibles comme un mot de passe...

La collection QueryString permet de récupérer la valeur associée à un champ par la syntaxe suivante

<%@ LANGUAGE="VBSCRIPT" %>

<% Request.QueryString("Champ") %>

Ainsi pour afficher tous les champs d'un formulaire, il est possible d'utiliser 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)) %>

<%BR%>

<% Next %>

La méthode POST code les informations de la même façon que la méthode GET (encodage URL et paires nom/valeur) mais elle envoie les données à la suite des en-têtes HTTP, dans un champ appelé corps de la requête. De cette façon la quantité de données envoyées n'est plus limitée, et est connue du serveur grâce à l'en-tête permettant de connaître la taille du corps de la requête.

La collection Form permet de manipuler les données envoyées par un formulaire utilisant la méthode POST, 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 + " = "& Request.Form(Champ)) %>

<%BR%>

<% Next %>

La collection Cookies

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

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 navigateur du client. Ce sont les variables définies par la norme CGI. 

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

Type de méthode utilisée par le client (ie POST ou GET)

CONTENT_TYPE

Type de contenu du corps de la requête (par exemple text/html).

METHOD

Type de méthode utilisée par le client (ie POST ou GET)

REFERER

URL du lien à partir duquel la requête a été effectuée

REMOTE_ADDR

Adresse IP du client

HTTP_ACCEPT_LANGUAGE

Langage attendu par le browser (anglais par défaut)

HTTP_USER_AGENT

Chaîne donnant des informations sur le client, comme le nom et la version du navigateur, du système d'exploitation

Pour compter les visiteurs d'un site par exemple, il peut être intéressant de stocker l'adresse IP de ces derniers et de compter le nombre d'adresses IP stockées étant différentes chaque jour. 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%>

Utilisation d’autres objets

De nombreux autres objets sont disponibles pour remplir de multiples services. On peut ainsi télécharger sur divers sites Internet des composants, gratuits ou payants permettant de remplir diverses tâches : envois de courriers électroniques, gestion de forums, créations de graphiques, téléchargement (upload) de fichiers, …

Voir par exemple http://www.aspsmart.com