dextha
Goto Top

Problem mit FormMailer

Hallo,

ich möchte einen einfachen FormMailer einsetzen und habe das Problem dass scheinbar die Variablen aus der User-Abfrage nicht ins formmailer-Script übernommen werden.

Folgende Abfrage mach ich für für den User:

<form name="mail" method="post" action="mailer.php">
Name
<br />
<input type="text" name="Name" />
<input name="Submit" type="submit" value="Nachricht senden" />


und das formmailer-Script (mailer.php) schaut so aus:

sendEmail() ;


  1. Konfiguration
############################################################################

function sendEmail(){

Zu Testzwecken
1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen möchten)
0 => Die eMail wird verschickt

$testOffline = 0 ;


Geben Sie hier ein gültige eMail-Adresse von sich an
Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
Option nicht aktiviert (also auf 1 gesetzt) wird.
(Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)

$emailFrom = "user@domain.at" ;


eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
1 => Ja | 0 => Nein

$useSendersEmail = 0 ;


Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!

$mailFromField = 'eMail' ;


SPAM-MISSBRAUCH-SCHUTZ
Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
Genauere Informationen finden Sie in der README.txt
1 => aktiviert | 0 => NICHT aktiviert

$spamProtect = 0 ;


Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
"kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
Genauere Informationen finden Sie in der README.txt

$send_dat = array(

"dat1" => array("meine@mailadresse.at", "", "Kontakt über die Internetseite", "index.php"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),
);


Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
geben sie für den grafischen Button name="senden" ein.

$ignoreFormFields = array('send_index', 'senden', 'submit', 'check_form','Submit','senden_y','senden_x');


  1. Programmablauf (ab hier nichts mehr ändern)
############################################################################

Datum (+deutsche Tage)

$name_tag = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
$day = $name_tag[date('w')];
$year = date('Y');
$n = date('d');
$month = date('m');
$time = (date('H:i'));


Prüfung, welches send_dat-Array zum senden verwendet werden soll
Default: dat1

!empty($_POST['send_index']) ? $st = $_POST['send_index'] : $st = 'dat1';


Versende Daten

$mailto = $send_dat[$st]; Ziel-eMail-Adresse
$mail_cc = $send_dat[$st][1];
2. Ziel-eMail-Adresse (Kopie)
$subject = $send_dat[$st][2]; Subjekt
$redirect = $send_dat[$st][3];
Zielseite nach eMailversand


Formularfelder auslesen und in die eMail "einsetzen"
Zu ignorierende Felder werden NICHT eingesetzt

while (list($fieldName, $fieldValue) = each($_POST)) {

$message .= "== $fieldName =====\r\n$fieldValue\r\n\r\n\r\n";
}


Funktion zum prüfen des Inhaltes aufrufen

$message = cleanContent($message, $spamProtect);


Datum und Zeit voranstellen

$message = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::\r\n\r\n$message";


Weiterleitung auf eine andere Seite

Header("Location: $redirect");


Absender-eMail-Adresse

($useSendersEmail == 1) ? $emailFrom = $_POST[$mailFromField] : $emailFrom = $emailFrom;
$header = "From: $emailFrom";


Kopie schicken

if (!empty($mail_cc)) {

$header .= "\r\n";
$header .= "Cc: $mail_cc";
}


eMail verschicken

if ($testOffline == '0') {

}


eMail zum testen in ein Textfile schreiben

if ($testOffline == '1') {

$testmail = fopen('email.txt', 'w+');
fwrite($testmail, $message);
fclose($testmail);
}

}


  1. Inhalte "bereinigen"
############################################################################

function cleanContent($content, $spamProtect) {


$content = str_replace('<br>', "\r\n", $content);
$content = stripslashes(strip_tags($content));

Spam-Missbrauch-Schutz aufrufen
if($spamProtect == 1) { $content = checkContent($content); }

return $content;

}


  1. Spam-Missbrauch-Schutz
############################################################################

function checkContent($tpcontent) {


kritische Zeichen entfernen

$checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
$tpcontent = preg_replace($checkit, "", $tpcontent);


Script-Abbruch bei eindeutigem Spamversuchen

if (preg_match("/(MIME\-Version\:|Content\-Type\face-smile/i", $tpcontent)) {
die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
}

if (empty($tpcontent)) {
die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
}

return $tpcontent ;

}


  1. ENDE
###########################################################

?>


Beim Mail welches Versende wird steht nur das Datum/Uhrzeit drin, welche in mailer.php selbst eingetragen wird. Die Daten, welche von der Abfrage ins mailer.php übertrgen werden sollen stehen nicht drin face-sad
Kann es sein, dass Einstellungen in der PHP.ini nicht passen???

Content-Key: 94961

Url: https://administrator.de/contentid/94961

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: masterG
masterG 24.08.2008 um 11:59:13 Uhr
Goto Top
An der php.ini liegts nicht. Das script übernimmt die variable für den text und für den betreff nicht.