Programma di esempio PRNFORM.PRT |
#!proteus -z
; Input e output nulli; leggo con STDREAD, scrivo con CONSOLE
; PRNFORM
;
; Programma per Proteus
;
; (C) 1998-2003 Simone Zanella Productions
;
; Esempio di script CGI: riceve un form e ritorna una pagina HTML
; con i valori dei campi.
; Sotto Ms-Dos i dati inviati sono salvati su un file temporaneo in quanto devo
; specificare l'esatta lunghezza dei dati ritornati.
!ifdef MS_DOS
FUNCTION InitHTML()
_P_F = TEMPNAME()
_P_H = FOPEN(_P_F, 28)
RETURN
FUNCTION PrintHTML(s)
FWRITE(_P_H, s)
RETURN
FUNCTION CloseHTML()
CONSOLELN "Content-type: text/html"
CONSOLELN "Content-length: " FSIZE(_P_H)
CONSOLELN ""
FSEEK(_P_H, 0, 0)
REPEAT
s = FREAD(_P_H, 1024)
CONSOLE s
UNTIL FEOF(_P_H)
FCLOSE(_P_H)
FREMOVE(_P_F)
RETURN
!else
FUNCTION InitHTML()
CONSOLELN "Content-type: text/html"
CONSOLELN ""
RETURN
FUNCTION PrintHTML(S)
CONSOLE S
RETURN
FUNCTION CloseHTML()
RETURN
!endif
CONST SIGNATURE = "PRNForm 1.0"
CONST TITLE = "Form results"
QUERY = ""
REPEAT
QUERY = QUERY STDREAD(1024)
UNTIL STDEOF()
A = URLDECODE(QUERY)
InitHTML()
PrintHTML("<html><head><title>" TITLE "</title></head><body><h1>" \
TITLE "</h1><table border=\"3\" cellpadding=\"3\" width=\"100%\">" \
CEOL)
AVLTRAVERSE(A, PrintForm)
FUNCTION PrintForm(field, value)
PrintHTML("<tr><td><strong>" field "</strong></td><td><cite>" value \
"</cite></td></tr>" _CEOL)
RETURN 0
PrintHTML("</table><br><br><strong>Converted by <cite>" SIGNATURE \
"</cite></strong></body></html>" CEOL)
CloseHTML()
ABORT 0