Aula ASP 2: Lendo dados enviados através de formulários
Autor:Eve Cole
Data da Última Atualização:2009-05-30 19:58:19
A coisa mais importante para aprender ASP é dominar os seis objetos integrados do ASP. Na verdade, na aula anterior, já aprendemos sobre o objeto Response (sério? Você cometeu um erro!), e o método Write, o método Redirect e a propriedade Expires mais comumente usados no objeto Response. Quando você vê os conceitos de objetos, métodos, propriedades, coleções e eventos (não conheço nenhum deles!), se você nunca foi exposto a eles antes, você é inteligente e não se importa com esses conceitos. Basta saber como usá-los. Meu ponto de vista é que é apenas o começo. Vamos continuar aprendendo o objeto Request por meio de exemplos. Para aprofundar nosso entendimento, execute esses programas para ver os resultados de saída.
1. Use Request.ServerVariables para obter variáveis de ambiente Esta parte é muito simples, mas o conteúdo obtido é muito importante. Por favor, veja o seguinte exemplo:
<%@Idioma=VBScript%>
<HTML><BODY>
<% 'wuf8.asp
Response.Write "Caminho para executar o arquivo ASP:" &_
Request.ServerVariables("Nome_Script") & "<Br>"
Response.Write "Retorne o comprimento dos dados do conteúdo:" &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "Retorne o endereço IP do cliente:" &_
Request.ServerVariables("Remote_Addr") & "<Br>"
Response.Write "Nome do navegador:" &_
Request.ServerVariables("HTTP_USER_AGENT") e "<Br>"
Response.Write "Retornar ao caminho físico real da página inicial:" &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<tabela colspan=8 cellpadding=5 borda=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nome da variável de ambiente</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Conteúdo</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
resultado1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
resultado2
</font></td></tr>
</tabela>
</BODY></HTML>
Agora, você deve descobrir como a rotina wuf2.asp da aula anterior é fácil!
Nota: A marcação HTML na última parte deste programa é puramente uma preparação para o exemplo a seguir, portanto não se surpreenda. Então, quais outras variáveis de ambiente existem? Você saberá executando o exemplo a seguir (este programa excluiu alguns códigos, é melhor baixar o programa fonte do meu site para facilitar o entendimento).
<%@Idioma=VBScript%>
<% 'wuf9.asp
Opção Explícita
Dim SV
%>
<HTML><BODY>
<tabela colspan=8 cellpadding=5 borda=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nome da variável de ambiente</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Resultados</font></td>
</tr>
<%
para cada Sv In Request.ServerVariables
Resposta.Escreva "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Resposta.Escrever Sv
Resposta.Escreva "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Response.Write Request.ServerVariables(Sv)
Resposta.Escreva "</font></td></tr>"
próximo
%>
</tabela>
</BODY></HTML>
Um loop For...Each é usado aqui para listar todos os elementos em uma coleção. Se você não entende a segunda metade, compare wuf8.asp, dê uma olhada nos resultados da execução e entenda-os com atenção (qual é a sua atitude?).
2. Transmitir dados para o servidor através do formulário (isso também pode ser entendido como a forma como o servidor lê os dados enviados pelo cliente)
Se você já trabalhou em uma homepage, deve saber que muitas homepages costumam usar formulários de formulário para permitir que os usuários insiram dados e depois enviem os dados por meio do botão "enviar". O "método" no formulário From possui dois métodos principais: POST e GET Após a "ação", geralmente é especificado um arquivo .cgi, .pl ou .asp. O que vamos aprender hoje é como escrever esse .asp. arquivo.
(1) Se você usar o método POST para transmitir dados, use Request.Form para ler os dados.
Primeiro edite o seguinte arquivo wuf10.htm para os usuários inserirem dados:
<html>
<body bgcolor="#FFFFFF">
<form método="post" action="wuf11.asp">
Nome: <input type="text" name="seunome"><br>
Gênero: <select name="gênero">
<option>Masculino</option>
<option>Feminino</option>
</select> <br>
Mensagem: <textarea name="message">Olá!
Preste atenção ao processamento de texto multilinha</textarea> <br>
Hobbies (mantenha pressionada a tecla Ctrl para selecionar vários):
<select name="hobby" tamanho múltiplo="4">
<opção>Computador</option>
<option>Compras</option>
<option>Filmes</option>
<option>Leitura</option>
</select> <br>
<input type="submit" name="Enviar" value="Enviar">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
Em seguida, escreva um arquivo wuf11.asp que wuf10.htm precisa usar para coletar dados:
<%@Idioma=VBScript%>
<% 'wuf11.asp
Opção Explícita
Resposta.Expira=0
Dim StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("seunome")) 'A função Trim é usada para remover espaços iniciais e finais
StrGender = Trim(Request.Form("gênero"))
StrM = Trim(Request.Form("mensagem"))
StrMsg = Substituir(StrM,vbcrlf,"<Br>" & vbcrlf)
'vbcrlf é equivalente à combinação de retorno de carro e avanço de linha. Quanto à função Substituir, sua função é substituir vbcrlf na string StrM por "<Br>" & vbcrlf (pense no uso deste vbcrlf? Você entenderá isso olhando o código-fonte HTML do arquivo de saída) Consulte a ajuda do VBScript para obter detalhes.
%>
<HTML><BODY>
Nome: <%=StrName%><Br><Br>
Gênero: <%= StrGender%><Br><Br>
Mensagem: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
Na verdade, o valor do botão “Enviar” também é passado: <Br>
<%= Request.Form("Enviar")%><Br><Br>
<% 'Primeiro entenda o que foi dito acima e depois veja como ler múltiplas opções se você estiver interessado
Response.Write "Número total de hobbies selecionados:" & Request.Form("hobby").Count & "<Br>"
Escureça eu
Para I = 1 para Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) & "<Br>"
Próximo
%>
</BODY></HTML>
Neste exemplo, para facilitar a compreensão, usamos dois programas. Na verdade, você também pode usar apenas um programa. Se estiver interessado, consulte a seguinte rotina wuf12.asp, que o ajudará a aprofundar sua compreensão das variáveis de ambiente.
<%@Idioma=VBScript%>
<% 'wuf12.asp
Opção Explícita
Resposta.Expira=0
Dim StrName, StrGender, StrM, StrMsg
Se Request.ServerVariables("Content_Length") <> 0 Então
'Após enviar os dados, o comprimento não será 0, então execute a seguinte instrução para exibir o resultado
'A parte a seguir foi copiada de wuf11.asp
StrName = Trim(Request.Form("seunome"))
StrGender = Trim(Request.Form("gênero"))
StrM = Trim(Request.Form("mensagem"))
StrMsg = Substituir(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><BODY>
Nome: <%=StrName%><Br><Br>
Gênero: <%= StrGender%><Br><Br>
Mensagem: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.Write "Número total de hobbies selecionados:" & Request.Form("hobby").Count & "<Br>"
Escureça eu
Para I = 1 para Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) & "<Br>"
Próximo
%>
</BODY></HTML>
<%
Outro
'Quando a página é carregada pela primeira vez, nenhum dado é enviado, então a parte anterior não é executada, mas começa a partir daqui
'É por isso que existem dois pares de <HTML></HTML>
'Basta copiar wuf10.htm abaixo.
'<form method="post" action="wuf11.asp"> foi substituído por variáveis de ambiente, mas é exatamente o mesmo
Response.Write "Veja os resultados: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><BODY>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
Nome: <input type="text" name="seunome"><br>
Gênero: <select name="gênero">
<option>Masculino</option>
<option>Feminino</option>
</select> <br>
Mensagem: <textarea name="message">Olá!
Preste atenção ao processamento de texto multilinha</textarea> <br>
Hobbies (mantenha pressionada a tecla Ctrl para selecionar vários):
<select name="hobby" tamanho múltiplo="4">
<opção>Computador</option>
<option>Compras</option>
<option>Filmes</option>
<option>Leitura</option>
</select> <br>
<input type="submit" name="Enviar" value="Enviar">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%Finalizar se%>
(2) Se você usar o método GET para transmitir dados, use Request.Querystring para ler os dados.
Primeiro edite o seguinte arquivo wuf13.htm para os usuários inserirem dados:
<html>
<body bgcolor="#FFFFFF">
<form método="get" action="wuf14.asp">
Nome em inglês: <input type="text" name="Ename"> <br>
Nome chinês: <input type="text" name="Cname"><br>
Gênero: <select name="gênero">
<option>Masculino</option>
<option>Feminino</option>
</select> <br>
<input type="submit" name="Enviar" value="Enviar">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
Em seguida, escreva um arquivo wuf14.asp que wuf13.htm precisa usar para coletar dados:
<%@Idioma=VBScript%>
<% 'wuf14.asp
Opção Explícita
Resposta.Expira=0
Dim StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'A função Trim é usada para remover espaços iniciais e finais
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("gênero"))
%>
<HTML><BODY>
Nome em inglês: <%= StrEname%><Br><Br>
Nome chinês: <%= StrCname%><Br><Br>
Gênero: <%= StrGender%><Br><Br>
Dê uma olhada na string enviada: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
Para entender melhor este programa, é melhor tentar primeiro o efeito da rotina wuf13.htm no navegador e observar os resultados de saída. Você descobrirá que a longa string na barra de endereço parece familiar, assim como quando. pesquisando no Yahoo visto praticamente o mesmo. Neste momento, você tenta inserir "http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=female" diretamente na barra de endereço e obtém o mesmo resultado. Então você pode ver desta forma, o resultado do wuf13.htm é obter um link com parâmetros como este. Request.QueryString lê cada dado dos parâmetros adicionais do endereço http://.
Na verdade, quando o botão "Enviar" é pressionado, a string de consulta (dados de entrada) será anexada ao endereço URL na forma de parâmetros (cada parâmetro é separado por "&") para atingir o objetivo de transferência de dados. Ao mesmo tempo, observe que não há chinês na string de consulta exibida no navegador, mas sim caracteres distorcidos irreconhecíveis contendo sinais de porcentagem. Finalmente, como antes, esses dois programas também podem ser mesclados em um programa (rotina wuf15.asp, você precisa baixá-lo do meu site).
Algumas notas:
1. Se você usar o método POST para enviar dados, Request.ServerVariables("Content_Length")>0.
Se você usar o método GET para enviar dados, então Request.ServerVariables("Query_String") <> "".
2. Depois de compreender o princípio, você pode misturar Request.Form e Request.QueryString no mesmo arquivo ASP.
3. Se houver vários botões em um formulário, como determinar qual botão o usuário pressionou? Se você prestar atenção, descobrirá que há uma frase na rotina wuf11.asp informando que o valor do botão “Enviar” também é transmitido, e um valor semelhante pode ser encontrado na string de consulta gerada em wuf13.htm. Observação: apenas o valor do botão pressionado é transmitido, enquanto o valor dos outros botões é "". Esta é a base para o julgamento (o site InfoWeb do "China Planning News" tem um artigo semelhante).