Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem mit FormMailer

Frage Entwicklung PHP

Mitglied: Dextha

Dextha (Level 2) - Jetzt verbinden

21.08.2008, aktualisiert 24.08.2008, 3630 Aufrufe, 1 Kommentar

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
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' ;


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][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('Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut!');
}


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\/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
Kann es sein, dass Einstellungen in der PHP.ini nicht passen???
Mitglied: masterG
24.08.2008 um 11:59 Uhr
An der php.ini liegts nicht. Das script übernimmt die variable für den text und für den betreff nicht.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Problem mit PSexec64 von Sysinternals (8)

Frage von MaxMoritz6 zum Thema Windows Netzwerk ...

Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Windows 10
Problem: einzige Konto gesperrt + Bitlocker aktiv (14)

Frage von Windows11 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...