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, 3683 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 ..
Ähnliche Inhalte
Windows Server
SimpleHelp - Problem (4)

Frage von ArnoNymous zum Thema Windows Server ...

Microsoft
Problem mit meinem PC (24)

Frage von AaronH96 zum Thema Microsoft ...

DNS
gelöst Wieder ein Problem mit der ASA (4)

Frage von Yannosch zum Thema DNS ...

Vmware
gelöst Keyboard problem (7)

Frage von rocco61 zum Thema Vmware ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (15)

Frage von Spitzbube zum Thema Firewall ...

Switche und Hubs
gelöst Cisco 2960x Stacking über mehrere Etagen (12)

Frage von b3scher zum Thema Switche und Hubs ...