 |
programmi per CGI
|
- le variabili di ambiente
- le variabili utilizzabili come parametri
- current directory e dir
- lettura di un file
- 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