Articoli Referenze Script FAQ Downloads ASP E-Commerce con ASP Menu Javascript Area Aziende Cocktail Registrazione domini



Trucchi per l'utilizzo del metodo POST nell'invio di un form

Home + Articoli + Form + Articolo # 103
Autore: Luca Ruggiero

Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.


Quando inviamo i dati da un modulo HTML ad uno script ASP che li esegue, nella maggior parte dei casi utilizziamo il metodo POST piuttosto che il GET, sia per una questione di sicurezza che per una questione di mole dei dati che il primo dei metodi citati riesce a gestire rispetto al secondo.

Ho notato, a partire dalle mie personali esperienze in materia, che chi si avvicina per la prima volta all'ASP utilizza un file HTML in cui costruisce il modulo, un file ASP senza interfaccia che si limita ad eseguire i dati ed effettua il redirect ad un terzo file, in genere HTML, che restituisce un messaggio di conferma o di errore, a seconda dei casi.

Diciamo che non si tratta di una pratica concettualmente sbagliata, ma nemmeno ottimale in termini di risparmio di risorse sul server, dato che dobbiamo impiegare due o addirittura più file quando potremmo impiegarne uno solo che contenga il modulo HTML, elabori i dati e restituisca i vari messaggi di errore e di conferma.

Rileggendo quanto appena scritto non mi pare di essere stato particolarmente criptico ma credo sia naturale che il lettore meno esperto possa iniziare a farsi qualche domanda inquietante a questo punto... ragion per cui, data la premessa, credo che una serie di esempi in sequenza serviranno a chiarire le idee.

Utilizzo di più file per l'invio e l'esecuzione dei dati

Creiamo il file modulo.html ed il file esegui.asp, il quale si limita a stampare a video i dati inviati dal modulo HTML.

Di seguito il codice del file modulo.html>
<form method="POST" action="esegui.asp">
    Inserisci un testo di esempio
    <input type="text" name="testo">
    <input type="submit" name="invia" value="Invia i dati">
</form>
Nel Tag <form> specifichiamo il metodo POST per definire il tipo di invio dei dati ed inviamo materialmente i dati al file esegui.asp di cui vediamo il codice
<%@LANGUAGE = VBScript%>
<%
    Dim testo
    testo = Request.Form("testo")
    If testo = "" Then
        Response.Write "Non hai scritto nulla..."
    Else
        Response.Write testo
    End If
%>
Per chi ha anche solo un minimo di conoscenza di base di ASP non credo ci sia bisogno di ulteriori commenti.

Utilizzo di un unico file per l'invio e l'esecuzione dei dati

Proviamo adesso ad inserire in un unico file sia il modulo HTML che lo script ASP per l'elaborazione dei dati, facendo in modo che i dati vengano elaborati solo ed unicamente quando il modulo è stato effettivamente inviato.

Modifichiamo come segue il codice del file esegui.asp e lanciamolo nel browser
<%@LANGUAGE = VBScript%>

<form method="POST" action="esegui.asp">
    Inserisci un testo di esempio
    <input type="text" name="testo">
    <input type="submit" name="invia" value="Invia i dati">
</form>

<%
    Dim invia
    invia = Request.Form("invia")
    If invia <> "" Then
        Dim testo
        testo = Request.Form("testo")
        If testo = "" Then
            Response.Write "Non hai scritto nulla..."
        Else
            Response.Write testo
        End If
    End If
%>
Il trucco è semplice: il bottone ha nome "invia" e valore "Invia i dati" quindi, se effettuo il controllo che il suo valore sia diverso da vuoto una volta avendolo recuperato e memorizzato in una variabile, sarà certo che lo script ASP verrà eseguito solo se i dati sono effettivamente stati inviati mediante il modulo HTML.

Utilizzo di un solo file... con l'integrazione di una QueryString

Vediamo adesso il secondo metodo per recuperare i dati da un modulo che si trova nella stessa pagina dello script ASP che li deve eseguire.

Sulla scorta dell'esempio precedente, possiamo utilizzare una QueryString ed associarla all'action del modulo HTML, verificare che sia valorizzata e solo in quel caso eseguire lo script.

Modifichiamo di nuovo il file esegui.asp come segue
<%@LANGUAGE = VBScript%>

<form method="POST" action="esegui.asp?modulo=OK">
    Inserisci un testo di esempio
    <input type="text" name="testo">
    <input type="submit" name="invia" value="Invia i dati">
</form>

<%
    Dim modulo
    modulo = Request.QueryString("modulo")
    If modulo = "OK" Then
        Dim testo
        testo = Request.Form("testo")
        If testo = "" Then
            Response.Write "Non hai scritto nulla..."
        Else
            Response.Write testo
        End If
    End If
%>
Conclusioni

Ho scritto questo articolo perchè mi sono arrivate tantissime richieste di aiuto sulla realizzazione di applicazioni di input/output da parte di utenti inesperti che, prima ancora di affrontare il problema dell'interazione con i database, avevano difficoltà a capire come si recuperano i dati da un modulo HTML e vari concetti legati a questa semplicissima architettura.

© 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti
  Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones