#!/usr/bin/perl
# Der Pfad zu Ihrem Mailprogramm
$mailprog = '/usr/sbin/sendmail';
# E-Mail des Empfängers UNBEDINGT den \ vor dem @ notieren
$webmastermail = "webmaster\@ihredomain.de";
############################################################
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
###############################################################
# Formularfeldname des Passwortformulares
$mailadresse = $FORM{'mailadresse'};
# Userdatenbank öffnen
open (FILE,"<userdb.dat");
flock(FILE,2);
@users=<FILE>;
flock(FILE,8);
close (FILE);
foreach (@users) # Userdatenbank durchsuchen
{
($email,$user,$passwort)=split(/\|/,$_);
if ($email eq $mailadresse)
{
open (MAIL, "|$mailprog -t") || die $!;
print MAIL "To: $mailadresse\n";
print MAIL "From: $email_liste[$empfaenger]\n";
print MAIL "Subject: Ihre Zugangsdaten\n";
print MAIL "Hier ihre Zugangsdaten\n";
print MAIL "User: $user \n";
print MAIL "Passwort: $passwort\n";
print MAIL "Viele Grüße\n";
print MAIL "Webmaster\n";
close(MAIL);
$gefunden=1;
}
}
if ($gefunden)
{
print "Content-type: text/html\n\n";
print qq~
<html>
<head>
<title>Userdaten gesendet</title>
</head>
<body>
<div align=center>
<font size=2 face=verdana, Arial><b>Userdaten gesendet</b><br>
Ihre Zugangsdaten wurden versendet.<br>
</font></div></body>
</html>
~;
} else {
print "Content-type: text/html\n\n";
print qq~
<html>
<head>
<title>User nicht gefunden</title>
</head>
<body>
<div align=center><table bgcolor=#F2F2F2 width=500 cellspacing=4 cellpadding=4><tr><td>
<font size=2 face=verdana, Arial><b>User nicht gefunden</b><br>
Zu der angegebenen E-Mail Adresse wurden leider keine Daten gefunden.<br>
</font>
</td></tr></table></div></body>
</html>
~;
}
exit;
Erläuterungen zum Script:
Der erste Abschnitt bis zu # Formularfeldname des Passwortformulares sollte eigentlich jedem klar sein der die vorangegangenen Workshops durchgearbeitet hat.
Hier in diesem Abschnitt wird nun zuerst einmal die Userdatenbank geöffnet und in das Array @users gepackt.
# Userdatenbank öffnen
open (FILE,"<userdb.dat");
flock(FILE,2);
@users=<FILE>;
flock(FILE,8);
close (FILE);
Hier nun wird mittels einer foreach Schleife das Array durchsucht.
Damit nun auch was gefunden werden kann wird angegeben wie die Datenbank aufgeteilt (gesplittet) ist. Hier in dem Falle steht die Mailadresse
am Anfang des Datensatzes. Diese könnte natürlich genausogut in der Mitte oder am Ende stehen. Der Bereich split(/\|/,$_);
Legt nun fest mit welchem Trennzeichen die Datenbank gesplittet ist.
foreach (@users) # Userdatenbank durchsuchen
{
($email,$user,$passwort)=split(/\|/,$_);
if ($email eq $mailadresse)
{
Bei if ($email eq $mailadresse) wird nun verglichen ob die eingegebene E-Mail Adresse zu einer Adresse in der Datenbank passt.
eq = Entspricht
Ist diese Bedingung erfüllt wird eine Mail mit den Daten gesendet. Ansonsten schickt uns die
$gefunden=1;
}
}
if ($gefunden)
{
zu der Fehlermeldung. Bei solchen foreach, if und else Konstrukten muss man peinlichst genau darauf achten
die Klammern richtig zu setzen. Hier in dem Beispiel wird eine öffnende Klammer bei foreach und gleich darunter bei
if geöffnet, geschlossen werden diese unterhalb der else Abfrage.
Dieses Script kann mit den entsprechenden Modifikationen (Datenbankname/Pfad/Datenbankstruktur) eigentlich sehr universell eingesetzt werden.
|