Hallo, bin ein PHP Newbie und habe ein einfaches Formular erstellt, bzw. ein fertiges benutzt. Leider habe ich es nicht geschafft die Pflichtfelder einzustellen. Sorry, wenn der Code nicht besonders sauber ist, aber vielleicht kann mir ja einer von euch helfen. Was muss ich wo eingeben, damit einige dieser Felder ausgefüllt müsen?
Hier die Seite mit dem Formular:
<br />
<br />
<form name="mail" method="post" action="planetmail.php">
<!-- <input type=hidden name="send_index" value="dat2"> -->
<b>Name</b>
<br />
<input type="text" name="Name" />
<br /><br />
<b>eMail-Adresse</b>
<br />
<input type="text" name="eMail" />
<br /><br />
<b>Mitteilung</b>
<br />
<textarea name="Mitteilung" rows="6"></textarea>
<br />
<input name="Submit" type="submit" value="Nachricht senden" />
</form>
Hier die Seite mit dem PHP Script:
<?php
#################################################
#
# (c) PlaNet Concept e.K., Lars Odermath, 2006
#
#################################################
#
# :: planetMail :: Version vom 22.07.2006
#
# COPYRIGHT NOTICE
# Copyright 2006 PlaNet Concept e.K.
# All Rights Reserved.
# EMail: kontakt@planetc.de
# URL : http://www.planetc.de
#
# :: planetMail :: darf von jedem kostenlos benutzt und geändert werden,
# solange dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
#
# Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
# Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
# Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
# bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder ein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten
# bleiben.
#################################################
sendEmail();
function sendEmail(){
#################################################
# KONFIGURATION
#################################################
// 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 = "tut@tut.net";
// eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
// 1 => Ja | 0 => Nein
$useSendersEmail = 1;
// Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
// eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
// Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!
$mailFromField = 'eMail-Adresse';
// 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 = 1;
// "Badword"-Schutz (Erweiterung zum Spam-Schutz)
// Hier können Sie Wörter und Wortkombinationen eintragen, die nicht in einer eMail vorkommen dürfen.
// Kommen diese Wörter vor, wird die Verarbeitung der Nachricht mit einer Fehlermeldung abgebrochen.
// Zusätzlich können Sie angeben, wie oft ein Wort maximal vorkommen darf.
// Z.B. kann es sein, dass jemand einen Link mit "http:" senden möchte. Immer häufiger kommen aber auch
// Spam-eMails vor, welche unmengen an Links enthalten. So könnte man einstellen, dass mehr als X Links
// in einer Nachricht vermutlich Spam sind.
// In der Vorgabe, dürfte in der Nachricht das Wort "Viagra" nicht einmal vorkommen, "Free Software" dürfte
// Ihnen zumindest einmal gesagt werden. Selbstverständlich können hier auch eMail-Adressen oder andere
// Inhalte eingetragen werden.
// NUTZEN SIE DIESE OPTION MIT BEDACHT, UM NICHT UNNÖTIG "GUTE" EMAILS ZU BLOCKEN
$GLOBALS['badwords'] = array('Viagra' => '0', '************' => '0', 'arsch' => '0', 'kostenlos' => '0', 'free' => '0', '@' => '1');
// 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("tut@tut.de", "", "CAMPUS DUISBURG Anmeldung O-Tage", "danke.htm"),
#"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');
###########################################################
# ENDE DER KONFIGURATION (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)
###########################################################
$mailto = '';
$mail_cc = '';
$subject= '';
$message = '';
// 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][0]; // 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))
{
if (in_array($fieldName, $ignoreFormFields) || empty($fieldValue)) continue;
$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') {
@mail ($mailto, $subject, $message, $header)
|| die('<b>Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut!</b>');
}
// eMail zum testen in ein Textfile schreiben
if ($testOffline == '1') {
$testmail = fopen('email.txt', 'w+');
fwrite($testmail, $message);
fclose($testmail);
}
} // end function
/***** 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;
}
/***** 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\/i", $tpcontent)) {
die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
}
// "Badword"-Überprüfung
if ($GLOBALS['badwords']) {
foreach($GLOBALS['badwords'] as $badword=>$count)
{
preg_match_all('/\b'.$badword.'\b/i', $tpcontent, $match);
if (sizeof($match[0]) > $count) {
die('Ihre Eingabe beinhaltet nicht akzeptierte Zeichen oder Wörter. Diese Nachricht wird nicht gesendet!');
}
}
}
// Formular ohne Inhalte nicht versenden
if (empty($tpcontent)) {
die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
}
return $tpcontent;
}
?>
Vielen Dank im Vorraus!
Hier die Seite mit dem Formular:
<br />
<br />
<form name="mail" method="post" action="planetmail.php">
<!-- <input type=hidden name="send_index" value="dat2"> -->
<b>Name</b>
<br />
<input type="text" name="Name" />
<br /><br />
<b>eMail-Adresse</b>
<br />
<input type="text" name="eMail" />
<br /><br />
<b>Mitteilung</b>
<br />
<textarea name="Mitteilung" rows="6"></textarea>
<br />
<input name="Submit" type="submit" value="Nachricht senden" />
</form>
Hier die Seite mit dem PHP Script:
<?php
#################################################
#
# (c) PlaNet Concept e.K., Lars Odermath, 2006
#
#################################################
#
# :: planetMail :: Version vom 22.07.2006
#
# COPYRIGHT NOTICE
# Copyright 2006 PlaNet Concept e.K.
# All Rights Reserved.
# EMail: kontakt@planetc.de
# URL : http://www.planetc.de
#
# :: planetMail :: darf von jedem kostenlos benutzt und geändert werden,
# solange dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
#
# Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
# Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
# Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
# bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder ein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten
# bleiben.
#################################################
sendEmail();
function sendEmail(){
#################################################
# KONFIGURATION
#################################################
// 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 = "tut@tut.net";
// eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
// 1 => Ja | 0 => Nein
$useSendersEmail = 1;
// Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
// eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
// Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!
$mailFromField = 'eMail-Adresse';
// 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 = 1;
// "Badword"-Schutz (Erweiterung zum Spam-Schutz)
// Hier können Sie Wörter und Wortkombinationen eintragen, die nicht in einer eMail vorkommen dürfen.
// Kommen diese Wörter vor, wird die Verarbeitung der Nachricht mit einer Fehlermeldung abgebrochen.
// Zusätzlich können Sie angeben, wie oft ein Wort maximal vorkommen darf.
// Z.B. kann es sein, dass jemand einen Link mit "http:" senden möchte. Immer häufiger kommen aber auch
// Spam-eMails vor, welche unmengen an Links enthalten. So könnte man einstellen, dass mehr als X Links
// in einer Nachricht vermutlich Spam sind.
// In der Vorgabe, dürfte in der Nachricht das Wort "Viagra" nicht einmal vorkommen, "Free Software" dürfte
// Ihnen zumindest einmal gesagt werden. Selbstverständlich können hier auch eMail-Adressen oder andere
// Inhalte eingetragen werden.
// NUTZEN SIE DIESE OPTION MIT BEDACHT, UM NICHT UNNÖTIG "GUTE" EMAILS ZU BLOCKEN
$GLOBALS['badwords'] = array('Viagra' => '0', '************' => '0', 'arsch' => '0', 'kostenlos' => '0', 'free' => '0', '@' => '1');
// 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("tut@tut.de", "", "CAMPUS DUISBURG Anmeldung O-Tage", "danke.htm"),
#"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');
###########################################################
# ENDE DER KONFIGURATION (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)
###########################################################
$mailto = '';
$mail_cc = '';
$subject= '';
$message = '';
// 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][0]; // 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))
{
if (in_array($fieldName, $ignoreFormFields) || empty($fieldValue)) continue;
$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') {
@mail ($mailto, $subject, $message, $header)
|| die('<b>Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut!</b>');
}
// eMail zum testen in ein Textfile schreiben
if ($testOffline == '1') {
$testmail = fopen('email.txt', 'w+');
fwrite($testmail, $message);
fclose($testmail);
}
} // end function
/***** 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;
}
/***** 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\/i", $tpcontent)) {
die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
}
// "Badword"-Überprüfung
if ($GLOBALS['badwords']) {
foreach($GLOBALS['badwords'] as $badword=>$count)
{
preg_match_all('/\b'.$badword.'\b/i', $tpcontent, $match);
if (sizeof($match[0]) > $count) {
die('Ihre Eingabe beinhaltet nicht akzeptierte Zeichen oder Wörter. Diese Nachricht wird nicht gesendet!');
}
}
}
// Formular ohne Inhalte nicht versenden
if (empty($tpcontent)) {
die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
}
return $tpcontent;
}
?>
Vielen Dank im Vorraus!
Kommentar