Cours ASP 2 : Lecture des données envoyées via des formulaires
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:58:19
La chose la plus importante pour apprendre ASP est de maîtriser les six objets intégrés d’ASP. En fait, dans la leçon précédente, nous avons déjà découvert l'objet Response (vraiment ? Avez-vous fait une erreur !), ainsi que la méthode Write, la méthode Redirect et la propriété Expires les plus couramment utilisées dans l'objet Response. Lorsque vous voyez les concepts d'objets, de méthodes, de propriétés, de collections et d'événements (je n'en connais aucun !), si vous n'y avez jamais été exposé auparavant, vous êtes intelligent et ne vous souciez pas de ces concepts. Sachez simplement comment les utiliser. Mon point de vue est que ce n'est que le début. Continuons à apprendre l'objet Request à travers des exemples. Afin d'approfondir notre compréhension, veuillez exécuter ces programmes pour voir les résultats de sortie.
1. Utilisez Request.ServerVariables pour obtenir les variables d'environnement. Cette partie est très simple, mais le contenu obtenu est très important. Comment l'obtenir ? Veuillez consulter l'exemple suivant :
<%@ Langage=VBScript %>
<HTML><CORPS>
<% 'wuf8.asp
Response.Write "Chemin d'accès au fichier ASP : " &_
Request.ServerVariables("Script_Name") & "<Br>"
Response.Write "Renvoyer la longueur des données du contenu : " &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "Renvoyer l'adresse IP du client : " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
Response.Write "Nom du navigateur : " &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
Response.Write "Retour au chemin physique réel de la page d'accueil : " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nom de la variable d'environnement</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Contenu</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
résultat1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
résultat2
</font></td></tr>
</table>
</BODY></HTML>
Maintenant, vous devriez découvrir à quel point la routine wuf2.asp de la leçon précédente s'avère simple !
Remarque : Le balisage HTML dans la dernière partie de ce programme est uniquement une préparation pour l'exemple suivant, alors ne soyez pas surpris. Alors, quelles autres variables d’environnement existe-t-il ? Vous le saurez en exécutant l'exemple suivant (ce programme a supprimé certains codes, il est préférable de télécharger le programme source depuis mon site pour une meilleure compréhension).
<%@ Langage=VBScript %>
<% 'wuf9.asp
Option explicite
Faible Sv
%>
<HTML><CORPS>
<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nom de la variable d'environnement</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Résultats</font></td>
</tr>
<%
pour chaque Sv dans Request.ServerVariables
Réponse.Écrivez "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Réponse.Écrire Sv
Réponse.Écrivez "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Réponse.Write Request.ServerVariables (Sv)
Réponse.Écrivez "</font></td></tr>"
suivant
%>
</table>
</BODY></HTML>
Une boucle For...Each est utilisée ici pour lister tous les éléments d'une collection. Si vous ne comprenez pas la seconde moitié, veuillez comparer wuf8.asp, jetez un œil aux résultats en cours et comprenez-le attentivement (quelle est votre attitude ?).
2. Transmettre les données au serveur via le formulaire (cela peut également être compris comme la façon dont le serveur lit les données envoyées par le client)
Si vous avez travaillé sur une page d'accueil, sachez que de nombreuses pages d'accueil utilisent généralement des formulaires pour permettre aux utilisateurs de saisir des données, puis d'envoyer les données via le bouton « Soumettre ». La « méthode » dans le formulaire From a deux méthodes principales : POST et GET. Après « action », un fichier .cgi, .pl ou .asp est généralement spécifié. Ce que nous allons apprendre aujourd'hui, c'est comment écrire ce .asp. déposer.
(1) Si vous utilisez la méthode POST pour transmettre des données, utilisez Request.Form pour lire les données.
Modifiez d'abord le fichier wuf10.htm suivant pour que les utilisateurs puissent saisir des données :
<html>
<corps bgcolor="#FFFFFF">
<form method="post" action="wuf11.asp">
Nom : <input type="text" name="votrenom"><br>
Sexe : <select name="gender">
<option>Homme</option>
<option>Femme</option>
</select> <br>
Message : <textarea name="message">Bonjour !
Faites attention au traitement du texte multiligne</textarea> <br>
Loisirs (maintenez la touche Ctrl enfoncée pour en sélectionner plusieurs) :
<select name="hobby" plusieurs tailles="4">
<option>Ordinateur</option>
<option>Achats</option>
<option>Films</option>
<option>Lecture</option>
</select> <br>
<input type="submit" name="Soumettre" value="Soumettre">
<input type="reset" name="Submit2" value="Reset">
</form>
</corps>
</html>
Ensuite, écrivez un fichier wuf11.asp que wuf10.htm doit utiliser pour collecter des données :
<%@ Langage=VBScript %>
<% 'wuf11.asp
Option explicite
Réponse.Expire=0
Dim StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("yourname")) 'La fonction Trim est utilisée pour supprimer les espaces de début et de fin
StrGender = Trim(Request.Form("genre"))
StrM = Trim(Request.Form("message"))
StrMsg = Remplacer(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf est équivalent à la combinaison d'un retour chariot et d'un saut de ligne. Quant à la fonction Replace, sa fonction est de remplacer vbcrlf dans la chaîne StrM par "<Br>" & vbcrlf (pensez à l'utilisation de ce vbcrlf ? Vous le comprendrez en regardant le code source HTML du fichier de sortie) . Veuillez vous référer à l'aide de VBScript pour plus de détails.
%>
<HTML><CORPS>
Nom : <%= StrName%><Br><Br>
Sexe : <%= StrGender%><Br><Br>
Message : <Br><Br>
<%=StrM%><Br><Br>
<%= StrMsg%><Br><Br>
En fait, la valeur du bouton « Soumettre » est également transmise : <Br>
<%= Request.Form("Soumettre")%><Br><Br>
<% 'Comprenez d'abord ce qui précède, puis voyez comment lire plusieurs options si vous êtes intéressé
Response.Write "Nombre total de loisirs sélectionnés :" & Request.Form("hobby").Count & "<Br>"
Faible je
Pour I = 1 à Request.Form("hobby").Count
Response.Write Request.Form("hobby") (I) & "<Br>"
Suivant
%>
</BODY></HTML>
Dans cet exemple, pour faciliter la compréhension, nous utilisons deux programmes. En fait, vous pouvez également utiliser un seul programme. Si vous êtes intéressé, veuillez consulter la routine suivante wuf12.asp, qui vous aidera à approfondir votre compréhension des variables d'environnement.
<%@ Langage=VBScript %>
<% 'wuf12.asp
Option explicite
Réponse.Expire=0
Dim StrName, StrGender, StrM, StrMsg
Si Request.ServerVariables("Content_Length") <> 0 Alors
'Après avoir soumis les données, la longueur ne sera pas 0, alors exécutez l'instruction suivante pour afficher le résultat
'La partie suivante est en fait copiée de wuf11.asp
StrName = Trim(Request.Form("votrenom"))
StrGender = Trim(Request.Form("genre"))
StrM = Trim(Request.Form("message"))
StrMsg = Remplacer(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><CORPS>
Nom : <%= StrName%><Br><Br>
Sexe : <%= StrGender%><Br><Br>
Message : <Br><Br>
<%=StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.Write "Nombre total de loisirs sélectionnés :" & Request.Form("hobby").Count & "<Br>"
Faible je
Pour I = 1 à Request.Form("hobby").Count
Response.Write Request.Form("hobby") (I) & "<Br>"
Suivant
%>
</BODY></HTML>
<%
Autre
'Lorsque la page est chargée pour la première fois, aucune donnée n'est soumise, donc la partie précédente n'est pas exécutée, mais commence à partir d'ici.
'C'est pourquoi il y a deux paires de <HTML></HTML>
« Copiez simplement wuf10.htm ci-dessous.
'<form method="post" action="wuf11.asp"> a été remplacé par des variables d'environnement, mais c'est exactement la même chose
Response.Write "Regardez les résultats : " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><CORPS>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
Nom : <input type="text" name="votrenom"><br>
Sexe : <select name="gender">
<option>Homme</option>
<option>Femme</option>
</select> <br>
Message : <textarea name="message">Bonjour !
Faites attention au traitement du texte multiligne</textarea> <br>
Loisirs (maintenez la touche Ctrl enfoncée pour en sélectionner plusieurs) :
<select name="hobby" plusieurs tailles="4">
<option>Ordinateur</option>
<option>Achats</option>
<option>Films</option>
<option>Lecture</option>
</select> <br>
<input type="submit" name="Soumettre" value="Soumettre">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%Fin Si%>
(2) Si vous utilisez la méthode GET pour transmettre des données, utilisez Request.Querystring pour lire les données.
Modifiez d'abord le fichier wuf13.htm suivant pour que les utilisateurs puissent saisir des données :
<html>
<corps bgcolor="#FFFFFF">
<form method="get" action="wuf14.asp">
Nom anglais : <input type="text" name="Ename"> <br>
Nom chinois : <input type="text" name="Cname"><br>
Sexe : <select name="gender">
<option>Homme</option>
<option>Femme</option>
</select> <br>
<input type="submit" name="Soumettre" value="Soumettre">
<input type="reset" name="Submit2" value="Reset">
</form>
</corps>
</html>
Ensuite, écrivez un fichier wuf14.asp que wuf13.htm doit utiliser pour collecter des données :
<%@ Langage=VBScript %>
<% 'wuf14.asp
Option explicite
Réponse.Expire=0
Dim StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'La fonction Trim est utilisée pour supprimer les espaces de début et de fin
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("genre"))
%>
<HTML><CORPS>
Nom anglais : <%= StrEname%><Br><Br>
Nom chinois : <%= StrCname%><Br><Br>
Sexe : <%= StrGender%><Br><Br>
Jetez un œil à la chaîne soumise : <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
Afin de mieux comprendre ce programme, vous feriez mieux d'essayer d'abord l'effet de la routine wuf13.htm dans le navigateur et de regarder les résultats de sortie. Vous constaterez que la longue chaîne dans la barre d'adresse vous semble familière, tout comme lorsque. recherche sur Yahoo Vu à peu près la même chose. À ce stade, vous essayez de saisir « http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=female » directement dans la barre d'adresse, et vous obtenez le même résultat. Vous pouvez donc le voir de cette façon, le résultat de wuf13.htm est d'obtenir un lien avec des paramètres comme celui-ci. Request.QueryString lit chaque donnée à partir des paramètres supplémentaires de l'adresse http://.
En fait, lorsque vous appuyez sur le bouton « Soumettre », la chaîne de requête (données d'entrée) sera ajoutée à l'adresse URL sous forme de paramètres (chaque paramètre est séparé par « & ») pour atteindre l'objectif de transfert de données. Dans le même temps, veuillez noter qu'il n'y a pas de chinois dans la chaîne de requête affichée dans le navigateur, mais des caractères tronqués méconnaissables contenant des signes de pourcentage. C'est parce qu'elle est codée. Enfin, comme auparavant, ces deux programmes peuvent également être fusionnés en un seul programme (routine wuf15.asp, vous devez la télécharger depuis mon site).
Quelques remarques :
1. Si vous utilisez la méthode POST pour soumettre des données, Request.ServerVariables("Content_Length")>0.
Si vous utilisez la méthode GET pour soumettre des données, alors Request.ServerVariables("Query_String") <> "".
2. Après avoir compris le principe, vous pouvez mélanger Request.Form et Request.QueryString dans le même fichier ASP.
3. S'il y a plusieurs boutons dans un formulaire, comment déterminer sur quel bouton l'utilisateur a appuyé ? Si vous faites attention, vous constaterez qu'il y a une phrase dans la routine wuf11.asp indiquant que la valeur du bouton "Soumettre" est également transmise, et une valeur similaire peut être trouvée dans la chaîne de requête générée dans wuf13.htm. Attention : seule la valeur du bouton enfoncé est transmise, tandis que la valeur des autres boutons est "". C'est la base du jugement (le site Web InfoWeb de China Planning News contient un article similaire).