#!/usr/local/bin/perl # # CGI-script for mottak av skjema # # Mottatte data sendes i e-post til adressen i feltet "epost-mottager" # og logges på enden av filen som er navngitt i feltet "log-fil" $tid =(time); $klokken=localtime($tid); # Les POST-data fra standard input # # ENV-variabelen CONTENT_LENGTH sier hvor mange tegn read(STDIN, $inndata, $ENV{'CONTENT_LENGTH'}); #------------------------------------- # Start en e-post-melding med dataene fra skjemaet $SENDMAIL = "|/usr/ucb/mail -t"; open (MAIL,$SENDMAIL); # Del opp inndata i navn / verdi - par %innpar = split(/[&=]/,$inndata); print MAIL "To: $innpar{'epost-mottager'} Subject: Innsendt skjema registrert. $klokken "; # Del opp inndata i navn / verdi - par %innpar = split(/[&=]/,$inndata); # Skriv ut navn/verdi-parene while (($navn,$verdi) = each %innpar) { # Vask ut hex-kodene $verdi =~ s/%(..)/pack("C",hex($1))/eg; # Oversett + tilbake til blank $verdi =~ tr/+/ /; # Skriv ut navn og verdi til epost-meldingen print MAIL "$navn = $verdi " ; } close MAIL; #------------------------------------- # Skriv en fil i append-modus # Del opp inndata i navn / verdi - par %innpar = split(/[&=]/,$inndata); $filnavn = $innpar{'log-fil'}; # Vask ut hex-koder i filnavnet $filnavn =~ s/%(..)/pack("C",hex($1))/eg; open (FILE, ">>$filnavn"); print FILE "------------------ $klokken "; # Skriv ut navn/verdi-parene while (($navn,$verdi) = each %innpar) { # Vask ut hex-kodene $verdi =~ s/%(..)/pack("C",hex($1))/eg; # Oversett + tilbake til blank $verdi =~ tr/+/ /; # Skriv ut navn og verdi på filen print FILE "$navn = $verdi " ; } close FILE; #------------------------------------- # Start et vev-ark som standard output print "Content-type: text/html