#!/usr/local/bin/perl # report.pl # Auteur: Alan Levine #> # GÈnËre une page web de rapport # envoyÈe par les utilisateurs du didacticiel # Ecrire le HTML. Ce script renvoie une # version HTML mettant en page les donnÈes # et envoie une copie ý leur instructeur # via email. # #< # modules perl require("CGI.pm"); # Charge la bibliothËque CGI.pm pour traiter les saisies et les objets use CGI qw(:standard :cgi-lib); use CGI::Carp qw(fatalsToBrowser); # Place les variables du formulaire dans un tableau &ReadParse; # Affiche un titre hmtl en retour print header; ############################################# # RÈcup^Ëre la date et l'heure courante # rÈcupËre d'abord l'heure (undef,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); # tableaux pour les noms des mois et des jours @months = qw(Janvier FÈvrier Mars Avril Mai Juin Juillet Aošt Septembre Octobre Novembre DÈcembre); @days = qw(Dim Lun Mar Mer Jeu Ven Sam); #convertit l'annÈe $year = $year + 1900; # ajuste l'heure sur une horloge de 12 heures if ($hour > 12) { $hour = $hour - 12; $ampm = 'PM'; } elsif ($hour > 12) { $ampm = 'PM'; } else { $ampm = 'AM'; } # comble avec des 0 $hour = sprintf("%02d", $hour); $min = sprintf("%02d", $min); #construit la date finale pour utilisation ultÈrieure $date_str = "$days[$wday], $months[$mon] $mday, $year at $hour:$min $ampm"; ############################################# # envoie par email si l'option est sÈlectionnÈe if ($in{'rep_email'} eq "y") { &send_email }; if ($in{'rep_web'} eq "y") { # crÈe la page web si l'option est sÈlectionnÈe &send_web; } elsif ($in{'rep_email'} ne "y") { # envoie un message d'erreur si aucune option n'est sÈlectionnÈe &send_err; } exit; # ----------------------------------------------------- # sous-routine pour envoyer le rapport par email sub send_email { if (!($in{'instructor'} =~ /pele.bigu.edu/)) { # Ceci est l'adresse par dÈfaut # qui est fausse ; donc, ca ne fonctionne que si elle est diffÈrente # Chemin pour trouver le programme sendmail # qui peut Ítre diffÈrent sur d'autres sites web $mail_thing = "/usr/sbin/sendmail"; # envoie le mail open(SENDMAIL, "| /$mail_thing -t -n "); print SENDMAIL <<"End_of_Mail"; From: $in{'email'} To: $in{'instructor'} Reply-to: $in{'email'} Sujet: Rapport Web Volcan de $in{'name'} ------------------ 8< ---------------------------------- Ce rapport Web Volcan a ÈtÈ Ècrit le $date_str et envoyÈ depuis IP $ENV{"REMOTE_ADDR"} -------------------------------------- information sur l'ÈlËve -------------------------------------- NAME : $in{'name'} EMAIL : $in{'email'} CODE : $in{'pass'} -------------------------------------- Rapport volcan -------------------------------------- VOLCAN : $in{'vname'} POSITION - LATITUDE : $in{'vlat'} POSITION - LONGITUDE : $in{'vlong'} TYPE : $in{'vtype'} ACTIVITE : $in{'active'} : $in{'vdate'} OPTIONS : $in{'note1'} : $in{'note2'} : $in{'note3'} : $in{'note4'} : $in{'note5'} AUTRES INFORMATIONS : $in{'info'} -------------------------------------- sources -------------------------------------- REFERENCES : $in{'ref1'} : $in{'ref2'} : $in{'ref3'} ======================================= Ce rapport a ÈtÈ crÈÈ pour exemple dans le didacticiel Ecrire le HTML ý http://www.mcli.dist.maricopa.edu/tut/ ======================================= End_of_Mail ; } # Affiche une rÈponse si nous envoyons un email seul if ($in{'rep_web'} ne "y") { print <<"end_html";

Rapport Volcan Envoyé

Votre rapport sur le volcan $in{'vname'} a été envoyé par e-mail à votre professeur.

end_html } } # ----------------------------------------------------- # sous-routine pour le rapport dans une page web sub send_web { print <<"end_html";

Formulaire de Rapport Volcan

end_html # Message de rÈponse si le rapport a ÈtÈ envoyÈ au professeur if ($in{'rep_email'} eq "y") { print '"; } print '
Information sur l'élève
nom $in{'name'}
email $in{'email'}
Rapport volcan
Nom du volcan $in{'vname'}
Position latitude= $in{'vlat'}
longitude=$in{'vlong'}
type $in{'vtype'}
activité $in{'active'}
date de la dernière éruption connue = $in{'vdate'}
Options $in{'note1'}
$in{'note2'}
$in{'note3'}
$in{'note4'}
$in{'note5'}
Autres infos $in{'info'}
sources
références
  1. $in{'ref1'}
  2. $in{'ref2'}
  3. $in{'ref3'}
Statistiques des rapports
date $date_str
copies'; print "rapport envoyÈ par email ý $in{'instructor'}
'; ; } # ----------------------------------------------------- # sous-routine de message d'erreur si aucune saisie sub send_err { print <<'end_html';

Erreur sur le Formulaire de Rapport Volcan

Vous devez sélectionner au moins une des options listées sous Envoyer le rapport. Cliquez sur le bouton Précédent de votre navigateur pour retourner au formulaire et choisir de générer ce rapport dans une page web, de l'envoyer par email à votre professeur, ou les deux.

end_html }