Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

Existe diferença ? Request.QueryString e Request.Form

Recommended Posts

Boa tarde!!

 

Alguém pode me dizer qual a diferença entre:

 

var = request("")

var = request.form("")

var = request.QueryString("")

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

request.form pega dados do formulário método POST

request.querystring pega dados da query (URL) método GET

request você faz requisição independente de onde venha

 

olha aqui mais informações

http://www.w3schools.com/ASP/asp_ref_request.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Request.QueryString(elemento)[(index)|.Count]

 

Aquando de lidarmos com o objeto Request nós estamos a aceder a informação dado ou devolvida por um cliente. O acesso por QueryString é a informação que está a seguir ao URL na barra de endereço do browser. Para começar vamos ver um exemplo prático. Quando comecei a programar entrei num dilema : vou alterar o index da minha página por cada vez que existem novas sub-páginas, ou fazer algo para o fazer automaticamente? Eu claro, escolhi o último. Aqui está como. Quase todo o link na minha página default.asp é composta da seguinte maneira:

 

 

verifica.asp?pagina=<nome da página aqui>

O script verifica.asp vai então validar se a página pedida existe, e se isso acontecer ele vai redirecionar a pessoa à mesma, senão para uma outra que tem o símbolo de estar em construção. O código é o seguinte.

 

Arquivo verifica.asp:

 

 

<%
Response.Expires=0
pagina=Request.QueryString("pagina")
path = Server.MapPath(pagina)
Set fs = Server.CreateObject("Scripting.FileSystemObject")
If Not fs.FileExists(path) Then
Response.Redirect "construcao.asp"
Else
Response.Redirect pagina
End If
%>

Response.expires=0 diz aos proxies e browsers para não fazer cache à página. A próxima linha é o foco deste artigo. Na mesma eu peço o nome da página dada pelo link na variável pagina. Então posso usar a mesma para o processo que vou fazer. Em particular eu faço um assign do path da path real do ficheiro usando o método Server.MapPath e então testar a existência do mesmo usando o objecto Scripting.FileSystemObject. Se a página existe então fazemos o Response.Redirect (que serve para redirecionamento) para enviar o utilizador para o objetivo.

 

A sintaxe de Request.Form é muito simples e curta:

 

 

Request.Form(elemento)[(index)|.Count]

 

Vamos lá a ver como isto trabalha para o seu melhor interesse. Vamos começar com uma simples página que responde a um input de um utilizador.

 

Arquivo page.asp:

 

 

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<% If Not Request.Form("Name")="" Then %>
Thanks <%=Request.Form("Name")%> !<br>
<% End If %>
<form method="post" action="page.asp">
Entre com seu nome:<input type="text" value="" name="Name">
<br>
<input type="submit">
</form>
</body>
</html>

Quando o script é chamado pela primeira vez, por um link normal, não existem dados do form nele, então um pedido a Request.Form("Name") devolve uma string vazia. A página devolve então um formulário com 2 inputs. Um input de texto com o nome 'Name' e outro com o botão de submit sem nome e sem 'value'. quando o formulário é submetido a usar o botão de submit, a mesma página é chamada com POST (nota: o método do formulário). Agora o Request.Form("Name") tem um valor nele (mesmo que seja uma string vazia), e (se não for uma string vazia) o if vai disparar uma mensagem de agradecimento. Agora muitas questões podem crescer aqui. O que acontece ao botão de Submit? Quais as outras hipóteses de disparo? É o 'Name' diferente de 'name'? Vamos re-escrever o código e achar algumas respostas.

 

Arquivo page_1.asp:

 

 

<html>
<head>
<title>Request.Form</title>
</head>
<body>
Estatisticas Request.Form :<br>
Numero de inputs:<%=Request.Form.Count%><br>
<%For k=1 To Request.Form("Name").Count%>
Request.Form("Name")(<%=k%>)=<%=Request.Form("name")(k)%><br>
<%Next%>
<% If Not Request.Form("Name")="" Then %>
<br>
Obrigado<%=Request.Form("name")%> !
<% End If %>
<hr>

<form method="post" action="page_1.asp">
Entre com seu nome:<input type="text" value="" name="Name">
<br>
<input type="submit">
</form>
<hr>
<br>
<form method="post" action="page8a.asp">
Entre com seu nome:<input type="text" value="" name="Name">
<br>
<input type="submit" name="submit">
</form>
<hr>
</body>
</html>

Isto devolve o numero de inputs que nós temos na coleção do request.Form. Na primeira chamada, esta página vai indicar que não há inputs (itens na colecção do Request.Form). Vai também mostrar 2 forms separados por breasks. O primeiro não tem um nome para o botão de Submit. Se escrever algo na zona de input e submeter o formulário, vai ver que existe um input e o seu valor. Se fizer o mesmo com o segundo formulário, vão existir 2 inputs, name e submit, como estão chamados no HTML. No tipo de input Submit, se indicar o nome, o par name/value vai ser dado pelo browser para o servidor Web. A pergunta é 'name' diferente de 'Name' quando do uso de Request.Form.

 

Vamos então mudar de tópico. Como usamos uma Select Box com múltiplas hipóteses? Uma vez mais, vamos re-escrever o nosso código e ver o que vai acontecer.

 

Arquivo page_2.asp:

 

 

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<% If Not Request.Form("Name")="" Then %>
Obrigado<%=Request.Form("Name")%> !<br>
<%For k=1 To Request.Form("Name").Count%>
Request.Form("Name")(<%=k%>)=<%=Request.Form("name")(k)%><br>
<%Next%>
<% End If %>
<form method="post" action="page_2.asp">
Entre com seu nome:<select name="name" size="5" multiple>
<option>Xan</option>
<option>Burzum</option>
<option>Alexandre</option>
<option>Teste</option>
<option>Fulano</option>
</select>
<br>
<input type="submit">
</form>
</body>
</html>

Com o atributo múltiplo, o Select pode devolver várias ou nenhuma opção. Seleccione vários e veja o resultado. Request.Form("Name"). Count vai devolver o numero de opções escolhidas e o loop com o For, vai mostrar cada uma dessa opções escolhidas Request.Form.(k), onde k é o index da opção escolhida.De notar que se nenhuma opção for escolhida Request.Form("Name") vai ser uma string vazia, e então Request.Form("Name").Count vai devolver o numero 0. Se existem várias opções escolhidas o mesmo vai devolver os mesmos concatenados e separados por virgulas, Request.Form("Name")(k) vai devolver a opção k escolhida. De notar que o index k deverá estar entre 1 e Request.Form("Name").Count.

 

Vamos nos mover para sabermos como podemos usar Request.Form para julgar futuras ações do nosso script. Algo simples que vai dizer 'Bem-Vindo' se carregar em 'Enter' e 'Adeus' se clicar em 'saída'.

 

Arquivo page_3.asp:

 

 

<html>
<head>
<title>Request.Form</title>
</head>
<body>
<%
If Not Request.Form("Name")="" Then
Select Case Request.Form("action")
Case "Enter"
%> Bem-Vindo <%=Request.Form("Name")%> !<br>
<%
Case "saída"
%> Adeus<%=Request.Form("Name")%> !<br>
<% End Select
End If %>
<form method="post" action="page_3.asp">
Entre com seu nome:<input type="text" name="Name" value="<%=Request.Form("name")%>">
<br>
<input type="submit" name="action" value="Enter">
<input type="submit" name="action" value="saída">
</form>
</body>
</html>

Temos 2 submits com o mesmo nome, mas com values diferentes. Apenas o value do submit que carregamos vai ser dado ao servidor, assim podemos fazer um teste no value, e fazer a ação direcionada para o mesmo.

 

Como pode ver, com a coleção de Request.Form é muito simples. Existe ainda algo que deve ser dito, quando do uso de Check Boxes num formulário de HMTL, deve de o testar com:

 

 

<%
If Request.Form("checkbox")="" Then
'Code to do when checkbox selected
Else
'Code to do when checkbox is not selected
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

se voce tem certeza de qual coleção pega os dados use-a e terá resultados de performance melhores

 

ex: se passa dados via form e usa request.form voce terá performance melhor do que com request apenas, em ambos os casos funcionará mas no primeiro mais rapido alguma coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

se voce tem certeza de qual coleção pega os dados use-a e terá resultados de performance melhores

 

ex: se passa dados via form e usa request.form voce terá performance melhor do que com request apenas, em ambos os casos funcionará mas no primeiro mais rapido alguma coisa

você diz isso em relação a request e request.form, mas e em relação a request.QueryString ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o request.queryString ele regada valor de uma query da URL, exemplo:

 

teste.com.br/pagina.asp?codigo=20

<%=request.queryString("codigo")%>

ele vai imprimir na tela o valor 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesma coisa

 

se tem certeza de que vem na url use o request.queryString em vez de apenas request e terá melhor desempenho

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.