Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point d'interrrogation comme séparateur.
http://www.laltruiste.com/page.asp?chaine_de_requete
Une chaîne de requête doit être constituée d'un ou plusieurs éléments dont chacun est associé à une valeur.Si la chaîne de requête contient plusieurs éléments, alors chaque couple élément/valeur doit être séparé par un caractère esperluette (&).
?element=valeur&element2=valeur2&...&elementN=valeurN
L'inconvénient principal des chaînes de requêtes réside dans le fait que les données transmises au serveur par ce biais sont visibles par les utilisateurs dans le champ Adresse de leur navigateur.
De plus, une chaîne de requêtes ne peut dépasser le maximum de 255 caractères.
Ainsi, l'utilisation de cette technique peut générer des problèmes de sécurité et des limitations quant à la taille des données à transmettre à une application Web.
Il existe deux méthodes pour l'utilisation des chaînes de requêtes :
<form action="page.asp?element=valeur" method="post"> <input type="text" name="nom" value="DUPUIS"> <input type="text" name="prenom" value="Michel"> <input type="submit" name="Soumettre" value="Soumission"> </form> |
<form action="page.asp" method="get"> <input type="text" name="nom" value="DUPUIS"> <input type="text" name="prenom" value="Michel"> <input type="submit" name="Soumettre" value="Soumission"> </form> |
Dans le premier cas, seules les informations contenues dans l'adresse indiquée par l'attribut action, seront envoyées par l'intermédiaire de la collection QueryString.
element=valeur
Dans le second cas, tous les éléments du formulaire seront transmis au moyen de la collection QueryString, à la page destinataire soit page.asp.
nom=DUPUIS&prenom=Michel
En conséquence, l'expression method="get" provoque la transmission complète et automatique d'un formulaire à partir d'une chaîne de requête.
L'objet Request associé à la collection QueryString permet d'extraire d'une chaîne de requêtes, l'ensemble des éléments et leur valeur y compris celle du bouton de soumission.
Request.QueryString 'Retourne nom=DUPUIS&prenom=Michel&Soumettre=Soumission
Plus précisément, en spécifiant un nom d'élément en tant qu'argument de la collection QueryString, il devient possible de récupérer essentiellement la valeur liée.
Request.QueryString("nom_element") 'Retourne pour prenom Michel
Un unique élément de chaînes de requêtes peut posséder plusieurs valeurs.
URL?element=valeur1&element=valeur2&...&element=valeurN
L'extraction des valeurs s'opère en employant l'instruction suivante :
Request.QueryString("nom_element")(index)
L'argument index correspond à une valeur entière.
Le nombre total de valeurs d'un élément est accessible à partir de la propriété Count.
Request.QueryString("nom_element").Count
Afin d'éviter d'éventuels problèmes d'encodage de caractères, l'objet Server associé à sa méthode URLEncode() permet d'appliquer une conversion adéquate d'une chaîne de caractères destinées à devenir une chaîne de requêtes.
Exemple [voir]Server.URLEncode("chaînes de caractères")
<!-- Formulaire --> <html> <body> <h2>Formulaire avec method="POST"</h2> <form action="traitement_querystring.asp ?type=post&form=un&form=deux&form=trois" method="post" name="formPost"> <u>Saisir un titre :</u><br> <input type="text" name="Titre" value="Fatrasie" size="20"><br> <textarea name="Paragraphe" cols="30" rows="4"> La chose va très mal Où point n'a de justice La chose va très mal Dit un veau de métal </textarea> <input type="submit" name="Soumettre" value="Soumission"> </form> <h2>Formulaire avec method="GET"</h2> <form action="traitement.asp" method="get" name="formGet"> <u>Saisir un titre :</u><br> <input type="text" name="Titre" value="Fatrasie" size="20"><br> <textarea name="Paragraphe" cols="30" rows="4"> La chose va très mal Où point n'a de justice La chose va très mal Dit un veau de métal </textarea> <input type="submit" name="Soumettre" value="Soumission"> </form> </body> </html> <html> <body> <table> <tr> <th>Elément</th> <th>Valeur</th> </tr> <% For Each chaine In Request.QueryString If Request.QueryString(chaine).Count > 1 Then For index = 1 To Request.QueryString(chaine).Count Response.Write "<tr><td><u>" & chaine & "(" & index _ & ") </u></td><td><b>" _ & Request.QueryString(chaine)(index) _ & "</b></td></tr>" Next Else Response.Write "<tr><td><u>" & chaine _ & "</u></td><td><b>" _ & Request.QueryString(chaine) _ & "</b></td></tr>" End If Next %> </table> </body> </html> |