#!/usr/local/bin/perl # report.pl # Autore: Alan Levine #> # Genera un resoconto formato web page che puo' essere # inviata dagli utenti del corso Writing HTML. Questo # script ritorna un form formattato in HTML per i dati # della pagina web e ne manda una copia agli istruttori # via email. # #< # modulo in perl require("CGI.pm"); # carica la libreria CGI.pm per gestire input ed oggetti use CGI qw(:standard :cgi-lib); use CGI::Carp qw(fatalsToBrowser); # converte le variabili del form in un array &ReadParse; # stampa le intestazioni html ritornate print header; # assume la data e l'ora corrente dal server $date_str= `date +"%a, %B %e, %Y at %I:%M %p"`; # manda una email se contrassegnato if ($in{'rep_email'} eq "y") { &send_email }; if ($in{'rep_web'} eq "y") { # crea una web page se contrassegnato &send_web; } elsif ($in{'rep_email'} ne "y") { # manda un messaggio d'errore se non e' contrassegnata nessuna opzione &send_err; } exit; # ----------------------------------------------------- # subroutine per una versione email del resoconto sub send_email { if (!($in{'instructor'} =~ /pele.bigu.edu/)) { # questo e' l'indirizzo falso, di modello, cosi' si # procede solo se viene sostituito # Questo e' il percorso del file del programma mailer, # che puo' variare a seconda dei vari siti web $mail_thing = "/usr/sbin/sendmail"; # invia la stringa della mail open(SENDMAIL, "| /$mail_thing -t -n "); print SENDMAIL <<"End_of_Mail"; From: $in{'email'} To: $in{'instructor'} Reply-to: $in{'email'} Subject: Volcano Web Report from $in{'name'} ------------------ 8< ---------------------------------- This Volcano Web report was written on $date_str and sent from IP $ENV{"REMOTE_ADDR"} -------------------------------------- student information -------------------------------------- NAME : $in{'name'} EMAIL : $in{'email'} CODE : $in{'pass'} -------------------------------------- volcano report -------------------------------------- VOLCANO : $in{'vname'} LOCATION - LATITUDE : $in{'vlat'} LOCATION - LONGITUDE : $in{'vlong'} TYPE : $in{'vtype'} ACTIVITY : $in{'active'} : $in{'vdate'} FEATURES : $in{'note1'} : $in{'note2'} : $in{'note3'} : $in{'note4'} : $in{'note5'} OTHER INFORMATION : $in{'info'} -------------------------------------- sources -------------------------------------- REFERENCES : $in{'ref1'} : $in{'ref2'} : $in{'ref3'} ======================================= this report was created as an example of the Writing HTML tutorial at http://www.mcli.dist.maricopa.edu/tut/ ======================================= End_of_Mail ; } # scrive una pagina di risposta se stiamo utilizzando la # sola posta elettronica if ($in{'rep_web'} ne "y") { print <<"end_html";

Rapporto Volcano Inviato

Il tuo rapporto su $in{'vname'} e' stato inviato via e-mail al tuo istruttore.

end_html } } # ----------------------------------------------------- # subroutine per scrivere il resoconto come pagina web sub send_web { print <<"end_html";

Form di Rapporto

end_html # feedback per il messaggio se e' stato inviato all'istruttore if ($in{'rep_email'} eq "y") { print '"; } print '
informazioni studente
nome $in{'name'}
email $in{'email'}
resoconto volcano
nome vulcano $in{'vname'}
posizione latitudine= $in{'vlat'}
longitudine=$in{'vlong'}
tipologia $in{'vtype'}
attivita' $in{'active'}
data dell'ultima eruzione conosciuta= $in{'vdate'}
caratteristiche $in{'note1'}
$in{'note2'}
$in{'note3'}
$in{'note4'}
$in{'note5'}
more info $in{'info'}
fonti
riferimenti
  1. $in{'ref1'}
  2. $in{'ref2'}
  3. $in{'ref3'}
report stats
data $date_str
copies'; print "rapporto mandato via email a $in{'instructor'}
'; ; } # ----------------------------------------------------- # subroutine per la creazione di un messaggio di errore # per mancanza di input sub send_err { print <<'end_html';

Errore Form Rapporto Volcano

Devi contrassegnare almeno una delle opzioni per il formato elencate sotto invia rapporto. Per favore, usa il bottone back del tuo web browser per tornare al form e scegliere se vuoi che questo resoconto sia generato come una web page, spedito come email al tuo istruttore, o entrambi.

end_html }