Login
нужен Скрипт
333 просмотров
Перейти к просмотру всей ветки
in Antwort IT-Service 02.04.05 18:40
наш╦л один скрипт в PERL ну я здеса ничего не понимаю.
Вот "resdme.txt - Datei"
Mailer
------
Installation
------------
- Öffnen der mailer.pl und setzen der Variablen, siehe Kommentare
- Hochladen (im ASCII-Mode)
- chmod 755 mailer.pl
- Formulare schreiben, siehe unten
Formulare
---------
Form-Tag:
<form action="/cgi-bin/mailer.pl" method="post">
sonstige Felder:
<input name="Feldname">
spezielle Feldnamen (ohne ""):
- alle Feldnamen, die mit "." (Punkt) beginnen, werden nicht übermittelt
- "von" - Absender-E-Mail
- "betreff" - Betreff-Zeile
- ".id" - Wird vor die Betreffzeile gesetzt
- ".titel" - Titel der Bestätigungs / Fehleranzeige
- "an" - Kurzname des Empfängers
- ".fehler" - Fehler-URL, wird bei Fehler statt der internen Seite angezeigt
- ".ok" - Ok-URL, wird als Bestätigung angezeigt
- ".nichtleer" - Liste der Feldnamen, die nicht leer sein dürfen
- Die Feldnamen mit "," (Komma) trennen und keine Leerzeichen dazwischen verwenden !
- Beispiel: <input type="hidden" name=".nichtleer" value="name,betreff,text">
- ".email" - Liste der Feldnamen, die eine E-Mail Adresse enthalten müssen, s.o.
- ".url" - Liste der Feldnamen, die eine URL enthalten müssen, s.o.
A вот и сам Скрипт(mailer.pl):
#!/usr/bin/perl
use CGI ':standard';
my %to=(,0);
my $fehler_url="";
my $ok_url="";
# Konfiguration
# Bei allen E-Mail Adressen ein \ vor @ !
# Pfad zu sendmail
my $mailprg = "/usr/sbin/sendmail";
# Absendermail
my $from = "absender\@domain.de";
# Empfängeradressen, können beliebig erweitert werden
# Einfach die Zeile Kopieren, für "ich" einen anderen
# Kurznamen eintragen und dahinter die E-Mail Adresse
# schreiben
# Die 'def' muss bleiben, die wird genommen, wenn keine
# andere passt.
# Im Formular ist dann das, was vorn steht (z.B: ich) im
# an-Feld einzutragen, nicht die E-Mail Adresse
$to{'def'} = "ziel1\@doamin.de";
$to{'ich'} = "ziel2\@domain.de";
# Betreffzeile
my $subject = "Formularantwort";
# Überschrift falls interne Bestätigung
my $title = "Formularübermittlung";
# Fehlerseite, das # am Anfang entfernen und URL eintragen, wenn sie
# verwendet werden soll, sonst interne Seite
#$fehler_url = "http://.../fehler.html";
# Bestätigungsseite, das # am Anfang entfernen und URL eintragen, wenn sie
# verwendet werden soll. Wenn kein Eintrag, wird eine interne Seite ausgegeben.
#$ok_url= "http://.../ok.shtml";
# Für interne Seite: Farben / Hintergrund
#Textfarbe
my $textcolor = "black";
#Hintergrundfarbe
my $bgcolor = "white";
# URL Hintergrundbild
my $background = "";
##################################################################################
# Ab hier nichts mehr ändern !
$from = param('von')?param('von'):$from;
$subject = param('betreff')?param('betreff'):$subject;
$subject =param('.id').":".$subject if (param('.id'),0);
$title = param('.titel')?param('.titel'):$title;
my $to1 = $to{param('an')};
$to1 = $to{'def'} if (!$to1,0);
$fehler_url = param('.fehler')?param('.fehler'):$fehler_url;
$ok_url = param('.ok')?param('.ok'):$ok_url;
my $fehler="";
my $ok = 1;
if (param('.nichtleer')) {
my @nl = split(/,/, param('.nichtleer'),0);
foreach(@nl) {
if (param($_) eq '') {
$ok = 0;
$fehler.= "Feld $_ muß ausgefüllt werden !
";
};};
};
if (param('.email')) {
my @nl = split(/,/, param('.email'),0);
foreach(@nl) {
if (param($_) !~ /^[^@]{2,}@[^@]{3,}\.[a-zA-Z]{2,4}$/) {
$ok = 0;
$fehler.= "Feld $_ enthält keine gültige E-Mail Adresse !
";
};};
};
if (param('.url')) {
my @nl = split(/,/, param('.url'),0);
foreach(@nl) {
if (param($_) !~ /^http:\/\/.{3,}\.[a-zA-Z]{2,4}\/?.*$/) {
$ok = 0;
$fehler.= "Feld $_ enthält keine gültige URL (muß mit http:// beginnen) !
";
};};
};
my @p = param(,0);
if (!$ok) {
if ($fehler_url) { print redirect($fehler_url,0); } else {
print header, start_html(-title=>$title, -background=>$background, -text=>$textcolor, -bgcolor=>$bgcolor), h1($title), h2('Fehler beim Senden des Formulars !'), "<p>$fehler</p><p>Bitte benutze den <b>Zurück</b>-Button des Browsers, um zurück zum Formular zu gelangen !", end_html; };
} else {
if ($ok_url) { print redirect($ok_url,0); } else {
print header, start_html(-title=>$title, -background=>$background, -text=>$textcolor, -bgcolor=>$bgcolor), h1($title), h2('Die Daten wurden übermittelt.',0);
foreach(sort @p) {
next if (substr($_,0,1) eq ".",0);
my $x = param($_,0);
$x =~ s/<[^>]*>//g;
$x =~ tr/<>//d;
print "<p><b>$_:</b>
$x</p>";
};
print end_html;
};
#Mail senden
open(MAIL, "|$mailprg -t") or die $!;
print MAIL "To: $to1\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Formulareintrag vom ", scalar localtime(time), ":\n\n";
foreach(sort @p) {
next if (substr($_,0,1) eq ".",0);
print MAIL "\n$_:\n", param($_), "\n";
};
close MAIL or die $!;
};
Подскажите пожалуйста что здеся надо поменат и как етот CHMOD на 755 посадить?
Вот "resdme.txt - Datei"
Mailer
------
Installation
------------
- Öffnen der mailer.pl und setzen der Variablen, siehe Kommentare
- Hochladen (im ASCII-Mode)
- chmod 755 mailer.pl
- Formulare schreiben, siehe unten
Formulare
---------
Form-Tag:
<form action="/cgi-bin/mailer.pl" method="post">
sonstige Felder:
<input name="Feldname">
spezielle Feldnamen (ohne ""):
- alle Feldnamen, die mit "." (Punkt) beginnen, werden nicht übermittelt
- "von" - Absender-E-Mail
- "betreff" - Betreff-Zeile
- ".id" - Wird vor die Betreffzeile gesetzt
- ".titel" - Titel der Bestätigungs / Fehleranzeige
- "an" - Kurzname des Empfängers
- ".fehler" - Fehler-URL, wird bei Fehler statt der internen Seite angezeigt
- ".ok" - Ok-URL, wird als Bestätigung angezeigt
- ".nichtleer" - Liste der Feldnamen, die nicht leer sein dürfen
- Die Feldnamen mit "," (Komma) trennen und keine Leerzeichen dazwischen verwenden !
- Beispiel: <input type="hidden" name=".nichtleer" value="name,betreff,text">
- ".email" - Liste der Feldnamen, die eine E-Mail Adresse enthalten müssen, s.o.
- ".url" - Liste der Feldnamen, die eine URL enthalten müssen, s.o.
A вот и сам Скрипт(mailer.pl):
#!/usr/bin/perl
use CGI ':standard';
my %to=(,0);
my $fehler_url="";
my $ok_url="";
# Konfiguration
# Bei allen E-Mail Adressen ein \ vor @ !
# Pfad zu sendmail
my $mailprg = "/usr/sbin/sendmail";
# Absendermail
my $from = "absender\@domain.de";
# Empfängeradressen, können beliebig erweitert werden
# Einfach die Zeile Kopieren, für "ich" einen anderen
# Kurznamen eintragen und dahinter die E-Mail Adresse
# schreiben
# Die 'def' muss bleiben, die wird genommen, wenn keine
# andere passt.
# Im Formular ist dann das, was vorn steht (z.B: ich) im
# an-Feld einzutragen, nicht die E-Mail Adresse
$to{'def'} = "ziel1\@doamin.de";
$to{'ich'} = "ziel2\@domain.de";
# Betreffzeile
my $subject = "Formularantwort";
# Überschrift falls interne Bestätigung
my $title = "Formularübermittlung";
# Fehlerseite, das # am Anfang entfernen und URL eintragen, wenn sie
# verwendet werden soll, sonst interne Seite
#$fehler_url = "http://.../fehler.html";
# Bestätigungsseite, das # am Anfang entfernen und URL eintragen, wenn sie
# verwendet werden soll. Wenn kein Eintrag, wird eine interne Seite ausgegeben.
#$ok_url= "http://.../ok.shtml";
# Für interne Seite: Farben / Hintergrund
#Textfarbe
my $textcolor = "black";
#Hintergrundfarbe
my $bgcolor = "white";
# URL Hintergrundbild
my $background = "";
##################################################################################
# Ab hier nichts mehr ändern !
$from = param('von')?param('von'):$from;
$subject = param('betreff')?param('betreff'):$subject;
$subject =param('.id').":".$subject if (param('.id'),0);
$title = param('.titel')?param('.titel'):$title;
my $to1 = $to{param('an')};
$to1 = $to{'def'} if (!$to1,0);
$fehler_url = param('.fehler')?param('.fehler'):$fehler_url;
$ok_url = param('.ok')?param('.ok'):$ok_url;
my $fehler="";
my $ok = 1;
if (param('.nichtleer')) {
my @nl = split(/,/, param('.nichtleer'),0);
foreach(@nl) {
if (param($_) eq '') {
$ok = 0;
$fehler.= "Feld $_ muß ausgefüllt werden !
";
};};
};
if (param('.email')) {
my @nl = split(/,/, param('.email'),0);
foreach(@nl) {
if (param($_) !~ /^[^@]{2,}@[^@]{3,}\.[a-zA-Z]{2,4}$/) {
$ok = 0;
$fehler.= "Feld $_ enthält keine gültige E-Mail Adresse !
";
};};
};
if (param('.url')) {
my @nl = split(/,/, param('.url'),0);
foreach(@nl) {
if (param($_) !~ /^http:\/\/.{3,}\.[a-zA-Z]{2,4}\/?.*$/) {
$ok = 0;
$fehler.= "Feld $_ enthält keine gültige URL (muß mit http:// beginnen) !
";
};};
};
my @p = param(,0);
if (!$ok) {
if ($fehler_url) { print redirect($fehler_url,0); } else {
print header, start_html(-title=>$title, -background=>$background, -text=>$textcolor, -bgcolor=>$bgcolor), h1($title), h2('Fehler beim Senden des Formulars !'), "<p>$fehler</p><p>Bitte benutze den <b>Zurück</b>-Button des Browsers, um zurück zum Formular zu gelangen !", end_html; };
} else {
if ($ok_url) { print redirect($ok_url,0); } else {
print header, start_html(-title=>$title, -background=>$background, -text=>$textcolor, -bgcolor=>$bgcolor), h1($title), h2('Die Daten wurden übermittelt.',0);
foreach(sort @p) {
next if (substr($_,0,1) eq ".",0);
my $x = param($_,0);
$x =~ s/<[^>]*>//g;
$x =~ tr/<>//d;
print "<p><b>$_:</b>
$x</p>";
};
print end_html;
};
#Mail senden
open(MAIL, "|$mailprg -t") or die $!;
print MAIL "To: $to1\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Formulareintrag vom ", scalar localtime(time), ":\n\n";
foreach(sort @p) {
next if (substr($_,0,1) eq ".",0);
print MAIL "\n$_:\n", param($_), "\n";
};
close MAIL or die $!;
};
Подскажите пожалуйста что здеся надо поменат и как етот CHMOD на 755 посадить?