programmi per CGI

  1. le variabili di ambiente
  2. le variabili utilizzabili come parametri
  3. current directory e dir
  4. lettura di un file
  5. le variabili dei form

CICAIA dell'Università di Modena   *   PoP di Modena del servizio


1 - le variabili di ambiente

$LINEEND = "\n"; print "Content-type: text/html",$LINEEND,$LINEEND; print "<h3>le variabili di ambiente viste dal PERL:</h3>",$LINEEND; while (($key,$value) = each %ENV) { print "$key = $value\n","<br>","\n"; } print "<hr>",$LINEEND; print "il programma che produce questo output equivale al comando <B>set:</B><P>",$LINEEND,$LINEEND; exit;

2 - le variabili utilizzabili come parametri

$LINEEND = "\n"; print "Content-type: text/html",$LINEEND,$LINEEND; print "<H3>le variabili utilizzabili come parametri</h3>",$LINEEND; print "<hr>",$LINEEND; print "PATH_INFO: ",$ENV{"PATH_INFO"},"<br>",$LINEEND; print "QUERY_STRING: ",$ENV{"QUERY_STRING"},"<br>",$LINEEND; print "<hr>",$LINEEND; print "PATH_TRANSLATED: ",$ENV{"PATH_TRANSLATED"},"<br>",$LINEEND; print "HTTP_REFERER: ",$ENV{"HTTP_REFERER"},"<br>",$LINEEND; print "<hr>",$LINEEND; print "ricordiamo anche:<br>",$LINEEND; print "REMOTE_HOST: ",$ENV{"REMOTE_HOST"},"<br>",$LINEEND; print "REMOTE_ADDR: ",$ENV{"REMOTE_ADDR"},"<br>",$LINEEND; print "SERVER_NAME: ",$ENV{"SERVER_NAME"},"<br>",$LINEEND; print "<hr>",$LINEEND; print "saluti da <i>",$ENV{"SERVER_NAME"},"</i><br>",$LINEEND; exit;

3 - current directory e dir

$LINEEND = "\n"; print "Content-type: text/html",$LINEEND,$LINEEND; print "<H3>LocalDir</h3>",$LINEEND; print "ciao <i>",$ENV{"REMOTE_HOST"}," (",$ENV{"REMOTE_ADDR"},")</i><br>",$LINEEND; print "<hr>",$LINEEND; print "<H3>mostra la current directory</h3>",$LINEEND; $riga=`cd`; print "current directory: $riga<br>",$LINEEND; print "<hr>",$LINEEND; print "<H3>esegue dir</h3>",$LINEEND; $riga=`dir $FILE`; print "<PRE>$riga<br>",$LINEEND; print "</DIR></DIR></DIR></DIR></DIR></DIR></DIR></DIR><hr>",$LINEEND; print "saluti da <i>",$ENV{"SERVER_NAME"},"</i><br>",$LINEEND; exit;

4 - lettura di un file

$LINEEND = "\n"; print "Content-type: text/html",$LINEEND,$LINEEND; print "<H3>leggi2.PL: lettura di un file ASCII a richiesta</h3>",$LINEEND; print "<hr>",$LINEEND; print "QUERY_STRING: ",$ENV{"QUERY_STRING"},"<br>",$LINEEND; # tolgo il nome della variabile FILE= $FILE=substr($ENV{"QUERY_STRING"},5); # sostituisco i %3A (se ci sono) con : $off=index($FILE,'%3A'); while ($off > -1) { $FILE1=substr($FILE,0,$off); $FILE2=substr($FILE,$off+3); $FILE=$FILE1.':'.$FILE2; #print "FILE1-",$FILE1,"-<br>",$LINEEND; #print "FILE2-",$FILE2,"-<br>",$LINEEND; #print "FILE-",$FILE,"-<br>",$LINEEND; $off=index($FILE,'%3A'); } #print "...fine loop...",$FILE,"...<br>",$LINEEND; # sostituisco i %5C (se ci sono) con \ $off=index($FILE,'%5C'); while ($off > -1) { $FILE1=substr($FILE,0,$off); $FILE2=substr($FILE,$off+3); $FILE=$FILE1."\\".$FILE2; $off=index($FILE,'%5C'); } print "File: ",$FILE,"<br>",$LINEEND; print "<hr>",$LINEEND; # apertura file. if (! open(STUFF,$FILE)) { print "Non posso aprire il file: $!\n",$LINEEND; die; } print "<pre>",$LINEEND; $nriga=0; while (<STUFF>) { $riga = $_; $nriga=$nriga+1; print "riga ",$nriga,": ",$riga,"<br>"; } print "</pre>fine del file.<br>",$LINEEND; print "<hr>",$LINEEND; print "saluti da <i>",$ENV{"SERVER_NAME"},"</i><br>",$LINEEND; exit;

5 - le variabili dei form

$LINEEND = "\n"; print "Content-type: text/html",$LINEEND,$LINEEND; print "<H3>form.pl</H3>",$LINEEND,$LINEEND; print "<h3>tutte le variabili conosciute da giorgio "; print "viste da dentro un FORM:</h3>",$LINEEND; print 'Se METHOD="GET", le variabili vanno in QUERY_STRING<br>',$LINEEND; print 'Se METHOD="POST", le variabili vanno sullo STDIN in una unica riga',$LINEEND; print "<hr>",$LINEEND; print "variabili client:<br>",$LINEEND; print "REMOTE_HOST: ",$ENV{"REMOTE_HOST"},"<br>",$LINEEND; print "REMOTE_ADDR: ",$ENV{"REMOTE_ADDR"},"<br>",$LINEEND; print "REMOTE_USER: ",$ENV{"REMOTE_USER"},"<br>",$LINEEND; print "REMOTE_IDENT: ",$ENV{"REMOTE_IDENT"},"<br>",$LINEEND; print "<hr>",$LINEEND; print "variabili di contenuto:<br>",$LINEEND; print "AUTH_TYPE: ",$ENV{"AUTH_TYPE"},"<br>",$LINEEND; print "CONTENT_TYPE: ",$ENV{"CONTENT_TYPE"},"<br>",$LINEEND; print "CONTENT_LENGTH: ",$ENV{"CONTENT_LENGTH"},"<br>",$LINEEND; print "QUERY_STRING: ",$ENV{"QUERY_STRING"},"<br>",$LINEEND; print "<p>",$LINEEND; # lettura <STDIN>. print "contenuto dello STDIN:","<br>",$LINEEND; $riga=<STDIN>; print $riga,"<br>",$LINEEND; print "<p>",$LINEEND; print "contenuto delle variabili:","<br>",$LINEEND; # sostituzione + con spazi $riga=~s/\+/\ /g; # ----------------------------------------------------------------------------------------- # decodifica variabili # ----------------------------------------------------------------------------------------- # localizzo il nome della variabile 1 $off=index($riga,"SELECT1="); $V1=''; if ($off >= 0) { # se ho trovato la variabile, estraggo il resto $V1=substr($riga,index($riga,"SELECT1=")+8); # localizzo & e tronco la stringa se lo trovo $coda=index($V1,'&'); if ($coda >= 0) { $V1=substr($V1,0,$coda); } } print "V1 >$V1<\n","<br>",$LINEEND; # localizzo il nome della variabile 2 $off=index($riga,"SELECT2="); $V2=''; if ($off >= 0) { # se ho trovato la variabile, estraggo il resto $V2=substr($riga,index($riga,"SELECT2=")+8); # localizzo & e tronco la stringa se lo trovo $coda=index($V2,'&'); if ($coda >= 0) { $V2=substr($V2,0,$coda); } } print "V2 >$V2<\n","<br>",$LINEEND; # localizzo il nome della variabile $off=index($riga,"SELECT3="); $V3=''; if ($off >= 0) { # se ho trovato la variabile, estraggo il resto $V3=substr($riga,index($riga,"SELECT3=")+8); # localizzo & e tronco la stringa se lo trovo $coda=index($V3,'&'); if ($coda >= 0) { $V3=substr($V3,0,$coda); } } print "V3 >$V3<\n","<br>",$LINEEND; print "<hr>",$LINEEND; print "altre variabili:<br>",$LINEEND; print "<p>",$LINEEND; print "SERVER_SOFTWARE: ",$ENV{"SERVER_SOFTWARE"},"<br>",$LINEEND; print "SERVER_NAME: ",$ENV{"SERVER_NAME"},"<br>",$LINEEND; print "SERVER_ADMIN: ",$ENV{"SERVER_ADMIN"},"<br>",$LINEEND; print "GATEWAY_INTERFACE:",$ENV{"GATEWAY_INTERFACE"},"<br>",$LINEEND; print "SERVER_PROTOCOL: ",$ENV{"SERVER_PROTOCOL"},"<br>",$LINEEND; print "SERVER_PORT: ",$ENV{"SERVER_PORT"},"<br>",$LINEEND; print "<hr>",$LINEEND; print "REQUEST_METHOD: ",$ENV{"REQUEST_METHOD"},"<br>",$LINEEND; print "HTTP_ACCEPT: ",$ENV{"HTTP_ACCEPT"},"<br>",$LINEEND; print "PATH_INFO: ",$ENV{"PATH_INFO"},"<br>",$LINEEND; print "PATH_TRANSLATED: ",$ENV{"PATH_TRANSLATED"},"<br>",$LINEEND; print "SCRIPT_NAME: ",$ENV{"SCRIPT_NAME"},"<br>",$LINEEND; print "<hr>",$LINEEND;

CICAIA dell'Università di Modena   *   PoP di Modena del servizio