Login  Regeln Aktuelles Datum und Uhrzeit: 21.11.2008, 18:19  
Startseite
Registrieren
Profil
Suchen
Mitgliederliste
Verzeichnis
Impressum



Partner
kostenlose Homepage
Fussball
Kostenloses Forum
SMS kostenlos
Webhosting
Webmasterportal
Kostenlos
Kredit ohne Schufa
Esoterik-Forum
Selbsthilfeforum
Artikel Backlink
Datenrettung
Problem mit mailform.cgi / Kontaktformular

 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Einsteigerforum
Vorheriges Thema anzeigen Nächstes Thema anzeigen 
Autor Nachricht
ReneSachse
Neuer [User]
Neuer



Anmeldung: 21.08.08
Beiträge: 2
Wohnort: Altenberge ...

BeitragVerfasst am: 21.08.2008, 17:56    Titel: Problem mit mailform.cgi / Kontaktformular Antworten mit Zitat

Hallo,

ich möchte ein Kontaktformular auf meiner Webseite einbinden (http://www.grogners-restaurant.de -> Kontakt).

Dazu möchte ich das CGI-Tool Mailform nutzen. Leider bekomme ich immer "internal server error" Meldungen, wenn ich das Formular ausführen möchte.

Ich habe die Pfadangaben in der Datei mailform.pl richtig gesetzt, alle Dateien des Scripts in mein CGI-BIN Verzeichnis im ASCI-Modus hochgeladen und die Rechte auf 775 gesetzt. Auch das Perl-Verzeichnis ist richtig angegeben (#!/usr/bin/perl).

Ich kann leider den Fehler nicht finden.
Vielleicht hat jemand einen Tipp.

Hier die HTML-Datei (Ausschnitt) mit dem Kontaktformular:
kontakt.html

Code:
<form action="http://www.grogners-restaurant.de/cgi-bin/form/mailform.cgi" method="POST">
<div align="left">
<table cellspacing="1" cellpadding="0" border="0" class="tb" width="550">
<tr>
    <td class="tc" colspan="2">Bitte füllen Sie alle Felder aus<br><br></td>
</tr>
<tr>
    <td class="tc" width="50%">Ihr Name </td>
        <td class="tc" width="50%"><input class="mb" style="width: 200px;" type="text" name="Name" size="30"  maxlength="50"></td>
</tr>
<tr>
    <td class="tc" width="50%">Ihr Vorname </td>
        <td class="tc" width="50%"><input class="mb" style="width: 200px;" type="text" name="IhrVorname" size="30"  maxlength="50"></td>
</tr>
<tr>
    <td class="tc" width="50%">Ihre E-Mail Adresse </td>
        <td class="tc" width="50%"><input class="mb" style="width: 200px;" type="text" name="email" size="30"  maxlength="50"></td>
</tr>
<tr>
    <td class="tc" width="50%">Telefon </td>
        <td class="tc" width="50%"><input class="mb" style="width: 200px;" type="text" name="Telefon" size="30"  maxlength="50"></td>
</tr>
<tr>
    <td class="tc" width="50%" valign="top">Ihre Nachricht an uns </td>
        <td class="tc" width="50%" valign="top"><textarea name="Nachricht" class="mb" style="width: 250px; height: 80px;" cols="30" rows="5"></textarea><br><br></td>
</tr>
<tr>
    <td class="ttop" colspan="2" align="center"><input style="width: 100px;" class="los" type="submit" value="Absenden"></td>
</tr>
</table>
</div>
</form>


Hier die mail-Setup-Datei aus dem Verzeichnis cgi-bin/form
mailsetup.pl

Code:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Konfigurationsdatei
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Formular URL
$formurl = 'http://www.grogners-restaurant.de/cgi-bin/form';
# Empfaenger Name
$empfaenger = 'Jos Luhukay';
# Empfaenger Mail
$empfaengermail = 'kontakt@grogners-restaurant.de';
# Weiterleitungs URL
$forwardurl = 'http://www.grogners-restaurant.de/danke.html';
# Weiterleitungs zeit
$forwardtime = "0";
# Floodsperre
$noflood = "100";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
1;

Und zu letzt die Mailform-CGI-Datei ebenfalls aus dem Verzeichnis cgi-bin/form

mailform.cgi

Code:
#!/usr/bin/perl

use CGI::Carp qw(fatalsToBrowser);
require "mailsetup.pl";
&formparser;

foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}
}
###################################################
# alle Formfelder
$Name = &maildatensaver($FORM{'Name'});
$IhrVorname = &maildatensaver($FORM{'IhrVorname'});
$email = &maildatensaver($FORM{'email'});
$Telefon = &maildatensaver($FORM{'Telefon'});
$Nachricht = &maildatensaver($FORM{'Nachricht'});

###################################################

# Fehlerbehandlung Anfang
$fehlermeldung = "" ;
$fehler_gefunden = "" ;

#--------CHECK fuer: Ihr Name-----------------------------
$errormeldung = "<li>Das Feld \"Ihr Name\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($Name eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#-------------------------------------
#--------CHECK fuer: vorname-----------------------------
$errormeldung = "<li>Das Feld \"vorname\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($IhrVorname eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#-------------------------------------
#--------CHECK fuer: Ihre E-Mail Adresse-----------------------------
$errormeldung = "<li>Das Feld \"Ihre E-Mail Adresse\" muss eine g&uuml;ltige E-Mail Adresse beinhalten.\n";
if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#-------------------------------------
#--------CHECK fuer: Ich interessiere mich für-----------------------------
$errormeldung = "<li>Das Feld \"Telefonnummer\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($Telefon eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#-------------------------------------
#--------CHECK fuer: Ihre Nachricht an uns-----------------------------
$errormeldung = "<li>Das Feld \"Ihre Nachricht an uns\" wurde nicht oder nicht mit korrekten Daten ausgefüllt.\n" ;
if ($Nachricht eq '') {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#-------------------------------------


if ($fehler_gefunden) {
&fehlerausgabe;
exit;
}
# Fehlerbehandlung Ende
###################################################
&floodcheck;
&datumsroutine;
&mailsenden;
&bestaetigung;
sub mailsenden {

# Mail senden
my $mailbodykontakt = <<MBT;
Hallo Grogners Restaurant-Team,

Sie haben eine neue Kontaktanfrage über Ihre Homepage www.grogners-restaurant.de erhalten.

Der Abesender hat folgende Informationen hinterlassen:

Vorname: $IhrVorname
Name: $Name
E-Mail: $email
Telefon: $Telefon
Nachricht: $Nachricht
MBT

if (!$email) {
$email = $empfaengermail;
}

if (!$betreff) {
$betreff = "Mail von Ihrem Feedbackformular";
}

open (MAIL, "|$mailprogamm -t") || die $!;
print MAIL "To: $empfaengermail ($empfaenger)\n";
print MAIL "From: $email \n";
print MAIL "Subject: $betreff\n\n";
print MAIL $mailbodykontakt;
print MAIL "\n\n";
print MAIL "Gesendet am: $datumlang\n";
close(MAIL);
}


###################################################
sub bestaetigung {
print "Content-type: text/html\n\n";

$meta = qq~<meta http-equiv="refresh" content="$forwardtime; URL=$forwardurl">~;
$titeltext = "Nachricht erfolgreich versendet";
$statustext = qq~<b>Vielen Dank f&uuml;r Ihre Nachricht.</b><br><br>
Sie werden in $forwardtime Sekunden zur Hauptseite weitergeleitet.
Sollte dies nicht funktionieren klicken Sie bitte untenstehen Link.<br><br>

<div align="center"><a href="$forwardurl">Zurück zur Hauptseite</a></div>
<br><br>
~;
print &tparser("header.html");
print &tparser("mailstatus.html");
print &tparser("footer.html");
exit;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Fehlerausgabe
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub fehlerausgabe {
print "Content-type: text/html\n\n";

$meta = '';
$titeltext = "Fehler festgestellt!";
$statustext = qq~<b>Beim ausfüllen haben Sie folgendes vergessen:</b>
<ol>
$fehlermeldung
</ol><br><br>

<div align="center">Bitte gehen Sie « <a href="javascript:history.go(-1)">zurück</a></div>
~;
print &tparser("header.html");
print &tparser("mailstatus.html");
print &tparser("footer.html");
exit;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Formdatenparser
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub formparser {
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;
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Templateroutine
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub tparser {
my $templatedatei = shift;
my $OUTPUT;
local($/);

open (FILE, "<$templatedatei") or die "Kann Template $templatedatei nicht oeffnen $!\n";
$OUTPUT = <FILE>;
close(FILE);
# Skalarwerte ersetzen
$OUTPUT =~ s/<__\$([\w\-]+)__>/${$1}/g;
# Hashwerte ersetzen
$OUTPUT =~ s/<__\%([\w\-]+)\{([\w\-]+)\}__>/${$1}{$2}/g;
# Arraywerte ersetzen
$OUTPUT =~ s/<__\$([\w\-]+)\[([\w\-]+)\]__>/${$1}[$2]/g;
# Werte ersetzen in der Form $lang{user}
$OUTPUT =~ s/<__\$([\w\-]+)\{([\w\-]+)\}__>/${$1}{$2}/g;
# Werte ersetzen in der Form $input{'action'} oder $lang{'hallo du'}
$OUTPUT =~ s/<__\$([\w\-]+)\{'([\w\- ]+)\'}__>/${$1}{$2}/g;
return $OUTPUT;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datumsroutine
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub datumsroutine {

@tagekurz = ('So','Mo','Di','Mi','Do','Fr','Sa');
@monatekurz = ('Jan.','Feb.','März','Apr.','Mai.','Jun.','Jul.','Aug.','Sept.','Okt.','Nov.','Dez.');
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
@monate = ('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst) = localtime(time);
$monat = $mon+1;
if($monat < 10) { $monat = "0$monat"; }
if($stunde < 10) { $stunde = "0$stunde"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$jahr = 1900 + $jahr;

# Ausgabe z.B. Sonntag, 14. Juli , 2002 um 17:39:43 Uhr
$datumlang = " $tage[$tag], $mtag. $monate[$mon]  $jahr um $stunde:$min:$sec Uhr";
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Floodsperre
# - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub floodcheck {
$wartezeit = "1.0";
$sperrlistenlaenge = 15;
my $IP_Nummer = $ENV{'REMOTE_ADDR'};
my $aktionszeit = time();

open(ZEITLIMIT, "floodsperre.dat");
@letzte_eintraege = <ZEITLIMIT>;
close(ZEITLIMIT);
foreach (@letzte_eintraege) {
if (/^$IP_Nummer/){
($junk,$letzte_aktionszeit) = split(/\|!!\|/,$_);
chomp($letzte_aktionszeit);
last;
}
} # ende foreach
$wartezeit *= $noflood; # zeit in sek bis neu gepostet werden darf
$floodfehler = 0;
if ( int(($aktionszeit - $letzte_aktionszeit) < $wartezeit)){

$floodfehler = 1;

# Fehlerpruefung
$fehlermeldung = "" ;
$fehler_gefunden = "" ;
# -----------------------------------------------------------------------
$errormeldung = "<li>Sie müssen $wartezeit Sekunden warten bis Sie wieder eine E-Mail absenden k&ouml;nnen.\n" ;
if ($floodfehler) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
# -----------------------------------------------------------------------
if ($fehler_gefunden) {
&fehlerausgabe;}
exit;
}
else {
if (unshift(@letzte_eintraege, "$IP_Nummer|!!|$aktionszeit\n") > $sperrlistenlaenge){
$#letzte_eintraege = $sperrlistenlaenge;
}

open(ZEITLIMIT, ">floodsperre.dat");
print ZEITLIMIT @letzte_eintraege;
close(ZEITLIMIT);
}
return 1;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Maildaten vorbereiten


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
sub maildatensaver {
$_[0] =~ s/^\s+//;
$_[0] =~ s/\s+$//;
$_[0] =~ s/`//g;
$_[0] =~ s/\r//g;
$_[0] =~ s/\|//g;
$_[0] =~ s/\n/\n/ig;
return($_[0]);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :(  :(


Nach oben
Private Nachricht senden
placido
Helfer [User]
Helfer



Anmeldung: 16.10.07
Beiträge: 194

BeitragVerfasst am: 22.08.2008, 19:40    Titel: Antworten mit Zitat

Mh.. wieso benutzt du kein PHP Script zum versenden eines Kontaktformulars?
Wenns auf die Weise wie du es machst nicht funktioniert kann ich dir eine andere Methode anbieten Smilie

_________________
Relativitätstheorie:
Wenn ich Dir einen Finger ins Auge stecke, haben wir beide einen Finger im Auge, aber ich bin relativ besser dran
Browserspiele


Nach oben
Private Nachricht senden
ReneSachse
Neuer [User]
Neuer



Anmeldung: 21.08.08
Beiträge: 2
Wohnort: Altenberge ...

BeitragVerfasst am: 24.08.2008, 08:51    Titel: Antworten mit Zitat

Okay, dann biete mir doch mal eine bessere Variante an Smilie

Nach oben
Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Gehe zu:  

Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Toplist bewertung / Problem: Banner n... MasterM112 HTML & CSS 0 20.11.2008, 18:12 Letzten Beitrag anzeigen
Keine neuen Beiträge Internet Serv Problem Chris Fabian Einsteigerforum 4 06.11.2008, 21:30 Letzten Beitrag anzeigen
Keine neuen Beiträge Onclick Javascript Problem im IE Timbo23 HTML & CSS 3 26.10.2008, 23:33 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem mit Anpassung RaVoo Einsteigerforum 5 13.10.2008, 20:46 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem mit Abtand im IE capillarvane HTML & CSS 2 02.10.2008, 11:51 Letzten Beitrag anzeigen
Threadübersicht