Ich weiß, das Script ist etwas kompliziert, aber ich uebe noch....
#!/usr/bin/perl -w ###!C:/Programme/Apache Group/Apache2/Perl/bin/perl.exe -w
use strict; use CGI::Carp qw(fatalsToBrowser);
my $pathtoall = "http://www.domain.de/bla/all"; my $pathtopages = "http://www.domain.net/bla"; my $pathtocgi = "http://www.domain.net/cgi-bin";
################################################################################
Erstmal die uebergebenen parameter auslesen
################################################################################ my $formulardaten; my $mail_ip; if($ENV{'REQUEST_METHOD'} eq 'GET'){ $formulardaten = $ENV{'QUERY_STRING'}; $mail_ip = $ENV{'REMOTE_ADDR'}; } else{ read(STDIN, $formulardaten, $ENV{'CONTENT_LENGTH'}); read(STDIN, $mail_ip, $ENV{'REMOTE_ADDR'}); } my @formularfelder = split(/&/, $formulardaten); my $formularfeld; my $name; my $value;
my $page_name_sended = 'none'; my $action_sended = 'none'; my $mail_absender = 'none'; my $mail_absendername = 'none'; my $mail_empfaenger = 'none'; my $mail_nachricht = 'none'; my $mail_ranum = 'none';
my $page_show = 2; my $page_name = 'none'; my $page_type = 'none'; my $page_topic = 'none'; my $page_main = 'none'; my $page_title = 'none'; my $page_link = 'none';
my $html = "Content-type: text/html\n\n"; my $mailprog = '/usr/lib/sendmail'; my $ranum = time();
foreach $formularfeld (@formularfelder){ ($name, $value) = split(/=/, $formularfeld); $value =~ tr/+/ /; $value =~ s/%0A//g; $value =~ s/%0D/||/g; $value =~ s/%7C/|/g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g;
if ($name eq "name") {$page_name_sended = "$value";} elsif($name eq "action") {$action_sended = "$value";} elsif($name eq "absender") {$mail_absender = "$value";} elsif($name eq "absendername") {$mail_absendername = "$value";} elsif($name eq "empfaenger") {$mail_empfaenger = "$value";} elsif($name eq "nachricht") {$mail_nachricht = "$value";} elsif($name eq "ranum") {$mail_ranum = "$value";} } $html .= qq~ <html>
<head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title>Seite empfehlen</title> <link rel=stylesheet type="text/css" href="$pathtoall/css/main.css"> </head>
<body bgcolor="#ffffff" text="#000000" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10"> ~;
if($action_sended eq 'showwindow'){&createWindow;} elsif($action_sended eq 'sendmymail'){&sendMyMail;}
print $html;
################################################################################
sub createWindow{ my @pages; open(DATEI, '<table_pages.pl') || die 'Konnte die Tabelle mit den Seiten nicht oeffnen'; @pages = <DATEI>; close(DATEI); shift(@pages); chomp(@pages);
daten der aufgerufenen seite einlesen
foreach (@pages) { ($page_show,$page_name,$page_main,$page_title,$page_link) = split(/|/,$_); last if ($page_name eq $page_name_sended); }
falls in der datenbank noch irgendwo localhost/ im pfad steht: rausloeschen!
$page_link =~ s/localhost///gi;
datei zur pruefung der sendeberechtigung erstellen
open(DATEI, ">dudarfst/$ranum.pl") || die 'Konnte Erlaubnis nicht vergeben'; print DATEI "$ranum"; close(DATEI);
$html .= qq~
<br> <h2>Seite empfehlen<img src="$pathtoall/img/dot_blau.gif" width="100%" height="1" border="0" vspace="2"></h2> <form name="FormName" action="$pathtocgi/foo/empfehlung.pl" method="get"> <input type="hidden" name="action" value="sendmymail"> <input type="hidden" name="ranum" value="$ranum"> <table border="0" cellpadding="0" cellspacing="0" width="470"> <tr> <td width="170" height="30" valign="top">Ihr Name</td> <td width="300" height="30" valign="top"><input class="edit300" type="text" name="absendername" size="35"></td> </tr> <tr> <td width="170" height="30" valign="top">Ihre E-Mail-Adresse</td> <td width="300" height="30" valign="top"><input class="edit300" type="text" name="absender" size="35"></td> </tr> <tr> <td width="170" height="30" valign="top">E-Mail des Empfängers</td> <td width="300" height="30" valign="top"><input class="edit300" type="text" name="empfaenger" size="35"></td> </tr> <tr> <td width="170" valign="top">Ihre Nachricht</td> <td width="300" rowspan="2"><textarea class="w300" name="nachricht" cols="28" rows="6">Ich möchte Dir folgende Seite von domain.de empfehlen: $pathtopages/$page_link</textarea></td> </tr> <tr> <td width="170" valign="bottom"><input type="submit" name="E" value="Empfehlung senden"></td> </tr> </table> </form> <p> <img src="$pathtoall/img/dot_blau.gif" width="450" height="1" border="0" vspace="2"><br> www.domain.de </p> </body> </html> ~; }
################################################################################
sub sendMyMail{
my $ranum_check = 0; my $verzeichnis = "dudarfst"; my $dateistring = "$mail_ranum.pl";
opendir(DIR, $verzeichnis) || die "Konnte das Erlaubnis-Verzeichnis nicht oeffnen."; my @dateien = readdir(DIR); closedir(DIR);
foreach(@dateien){ if($dateistring eq $){ $ranum_check = 1; } last if($dateistring eq $); }
if($ranum_check == 1){ open(MAIL,"|$mailprog -t"); print MAIL "To: $mail_empfaenger\n"; print MAIL "From: $mail_absender\n"; print MAIL "Subject: Seitenempfehlung von $mail_absendername \n"; print MAIL "X-Priority: 1 (Highest)\n\n"; print MAIL "$mail_nachricht"; close(MAIL);
unlink("dudarfs/$mail_ranum.pl");
$html .= qq~ <br> <h1>Ihre Empfehlung wurde versendet</h1> <p><b>Absender:</b><br> $mail_absendername</p> <p><b>E-Mail-Adresse des Absenders:</b><br>$mail_absender</p> <p><b>E-Mail-Adresse des Empfängers:</b><br>$mail_empfaenger</p> <p><b>Nachricht:</b><br>$mail_nachricht</p> <p>Sie können das Fenster jetzt <a href="javascript:window.close();">schließen</a></p> </body></html> ~; } else { open(MAIL,"|$mailprog -t"); print MAIL "To: webmaster@domain.de\n"; print MAIL "From: error@domain.net\n"; print MAIL "Subject: Fehler bei Seitenempfehlung\n"; print MAIL "X-Priority: 1 (Highest)\n\n"; print MAIL "$mail_ip\n"; print MAIL "$dateistring\n"; print MAIL "$mail_absendername\n"; print MAIL "$mail_absender\n"; print MAIL "$mail_empfaenger\n"; print MAIL "$mail_nachricht\n"; close(MAIL);
$html .= qq~ <br> <h1>Fehler</h1> <p>Mögliche Ursachen:</p> <ul> <li>Die URL wurde nicht korrekt übermittelt oder verändert <li>Das Skript wurde nicht durch ordnungsgemäß aufgerufen <li>Sonstige Manipulation </ul> <p>Um eine Manipulation auszuschließen, wurden die Daten der e-mail und die IP des Absenders zur Überprüfung an den Webmaster gesendet.</p> <p>Fenster <a href="javascript:window.close();">schließen</a></p> </body></html> ~; } }