L'Oggetto Request

Meno immediato del precedente, l'oggetto Requestserve ad inviare delle richieste al server Web, ad esempiotramite un modulo.

I quattro metodi principali di questo oggetto sonoCookies, Form, QueryString eServerVariables.

Occupiamoci subito del primo e dell'ultimo metodoelencato, per lasciare spazio ai due centrali piùfrequentemente utilizzati.

Request.Cookies

Serve a recuperare un cookie, la sintassi è semplice

Request.Cookies("NOME_DEL_COOKIE")

Request.ServerVariables

Serve a recuperare una serie di variabili d'ambienteproprietarie del server Web di appartenenza o dei server Webcollegati, ecco un elenco delle principali classiutilizzabili:

ALL_HTTP - Restituisce gli header http richiesti dalclient
HTTP_COOKIE - Booleano, restituisce true o false aseconda che i cookie siano abilitati o meno
HTTP_REFERER - Restituisce il nome ed il dominio diun sito da cui è partita una richiesta da unclient
HTTP_USER_AGENT - Restituisce il sistema operativodel client che si collega all'applicazione
HTTPS - Booleano, restituisce true o false a secondache la connessione sia protetta da SSL
LOCAL_ADDR - Restituisce l'indirizzo del serverWeb di appartenenza
QUERY_STRING - Restituisce l'intera querystringassociata alla richiesta del client
REMOTE_ADDR - Restituisce l'indirizzo IP serverWeb richiedente
REMOTE_HOST - Restituisce il nome del server Webrichiedente

La sintassi è molto semplice

Request.ServerVariables("REMOTE_ADDR");

Request.Form

Questo è il primo metodo con cui è possibileinviare un pacchetto di dati al server Web perchè lielabori, il modulo Html verrà inviato specificando ilmetodo post, ad esempio

<form action="elabora.asp" method="post">

In questo caso il post avverrà al fileelabora.asp, vediamo uno spezzone di un potenzialecodice di questo file, che si occupi di inviare dati in undatabase o di altro non ci interessa, l'unica cosa che ciinteressa è recuperare i dati inviati dal modulo:

var nome = Request.Form("nome");

dove la variabile nome è indicativa, in generesi utilizza lo stesso nome del campo a cui èassociata, passato tra parentesi e tra doppi apici alla finedella stringa.

Esiste un altro modo di recuperare i dati da un form conquesto metodo, è in realtà analogo ma in formapiù completa, cioè passando la richiesta in unanuova stringa:

var nome = new String(Request.Form("nome"));

Ecco un classico esempio di differenza tra linguaggi discripting client-side e server-side: non è possibile,ad esempio con Javascript, passare un dato tra due opiù file, data l'impossibilità da parte diqualsiasi gestore di occuparsene... Asp pone rimedio a questolimite!

Request.QueryString

Simile al precedente, possiamo con questo metodo recuperaredati da un modulo appendendone i valori alla finedell'Url della pagina di destinazione, ad esempio dielabora.asp, vediamo un esempio di possibile Url:

http://www.server.it/elabora.asp?nome=Luca

Prima di passare ad esempi concreti, analizziamo gli elementie la struttura di una querystring:

? - Concatena il primo valore alla Url dellapagina
& - Concatena dal secondo valore in poi alla Urldella pagina
= - Identifica il valore
+ - Separa più parole (o valori) di unaQueryString

Ecco un esempio più completo:

http://www.server.it/elabora.asp?nome=Luca&cognome=Ruggiero

Se il cognome fosse composto da più parole, ad esempioDe Ruggiero, verrebbe utilizzato il carattere +in questo modo:

http://www.server.it/elabora.asp?nome=Luca&cognome=De+Ruggiero

Per reperire dati in questo modo dobbiamo inviare il form colmetodo get, stabilito per default dalle convenzioniHtml, ma è comunque meglio specificarlo:

<form action="elabora.asp" method="get">

Come nel caso precedente, possiamo recuperare il valore di uncampo sia con la semplice dichiarazione

var nome = Request.QueryString("nome");

che con la più completa

var nome = new String(Request.QueryString("nome"));

E' opportuno evitare di utilizzare questo metodo perpassare alla pagina Asp che elaborerà i dati nei casiin cui vengono inviati valori tipo password o carte dicredito, venendo messi in chiaro sull'indirizzo dellapagina, sarà possibile che un occhio indiscreto lilegga stando seduto a fianco all'utente che compila ilmodulo, o che venga sfruttato da qualche professionistabuontempone un bug di un browser per impossessarsi di certidati.

Un esempio pratico dell'utilizzo del metodoRequest.QueryString

La funzionalità di questo metodo ci permette di crearedei link che puntano direttamente alla querystring associataall'indirizzo, potremmo quindi creare un solo file Aspche, a seconda della querystring passata generi outputdiversi.

Creiamo un sommario di argomenti nel file index.htm:

<div>   <a href="pagina.asp?id=1">Link a pagina 1</a><br>   <a href="pagina.asp?id=2">Link a pagina 2</a><br>   <a href="pagina.asp?id=3">Link a pagina 3</a><br></div>

In questo modo il file pagina.asp andrà aleggere la querystring passatagli nel link e sicomporterà di conseguenza, immaginiamo di volerincludere con le SSI un file diverso per ogni richiesta, adesempio pagina1.htm, pagina2.htm e cosìvia, ecco come si presenta il codice di pagina.asp:

 

<%@LANGUAGE = JScript%><%   var id = new String(Request.QueryString("id"));%><html> <head>  <title>Oggetto Request</title> </head><body><%if ((id == "") || (id == "undefined")) {%> ERRORE 404 - File non trovato <%}%><%if (id == "1") {%> <!--#include file="pagina1.htm"--> <%}%><%if (id == "2") {%> <!--#include file="pagina2.htm"--> <%}%><%if (id == "3") {%> <!--#include file="pagina3.htm"--> <%}%></body></html>



Ti potrebbe interessare anche

commenta la notizia