| Neuer Benutzer
Registriert seit: 19.01.2009
Beiträge: 14
| Kontaktformular - Meinungen Hallo,
danke für die Tipps. Die Kopplung der Kontaktdaten mit einem Upload ist gewollt. Aber natürlich nur mit einem.
Hier nochmal mein veränderter Code mit Mailfunktion. An der Fehlermeldung arbeite ich noch. Die ist noch nicht fertig. PHP-Code: <?php
//erstmal Variablen definieren
$pagename="test.php";
$error=$name=$plz=$ort=$strasse=$nr=$fon=$email=$UPFILE=$mitteilungen="";
$pdfpfad = 'order/';
// URL zum Uploadverzeichnis
$URL = 'http://www.meine_website/uploader/order';
// max. Uploadgroesse in KB
$max_upl_size = 1000;
// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben
$arr_erlaube_dateityp = array(pdf);
// an wen geht die Mail ?
$empfaenger="ich@online.de";
if(isset($_POST['senden'])) {
// es wurde abschicken gedrückt, also erst mal die Felder holen
if (get_magic_quotes_gpc()) {
$name= stripslashes($_POST['name']);
$plz= stripslashes($_POST['plz']);
$ort= stripslashes($_POST['ort']);
$strasse= stripslashes($_POST['strasse']);
$nr= stripslashes($_POST['nr']);
$fon= stripslashes($_POST['fon']);
$email= stripslashes($_POST['email']);
$UPFILE= stripslashes($_POST['UPFILE']);
}
else {
$name= $_POST['name'];
$plz= $_POST['plz'];
$ort= $_POST['ort'];
$strasse= $_POST['strasse'];
$nr= $_POST['nr'];
$fon= $_POST['fon'];
$email= $_POST['email'];
$UPFILE= $_POST['UPFILE'];
}
//Mitteilungen setzen sich aus allen Eingaben zusammen
$mitteilungen=get_magic_quotes_gpc() ? stripslashes($_POST['mitteilungen']) : $_POST['mitteilungen'];
//Form-Attacken verhindern (suche nach \r\n oder \n)
if(strpos($name,"\r\n")>0 || strpos($name,"\n")>0) {
DebugAttack(substr($name,strpos($name,"\r\n")));
$name="";
}
if(strpos($plz,"\r\n")>0 || strpos($plz,"\n")>0) {
DebugAttack(substr($plz,strpos($plz,"\r\n")));
$plz="";
}
if(strpos($ort,"\r\n")>0 || strpos($ort,"\n")>0) {
DebugAttack(substr($ort,strpos($ort,"\r\n")));
$ort="";
}
if(strpos($strasse,"\r\n")>0 || strpos($strasse,"\n")>0) {
DebugAttack(substr($strasse,strpos($strasse,"\r\n")));
$strasse="";
}
if(strpos($nr,"\r\n")>0 || strpos($nr,"\n")>0) {
DebugAttack(substr($nr,strpos($nr,"\r\n")));
$nr="";
}
if(strpos($fon,"\r\n")>0 || strpos($fon,"\n")>0) {
DebugAttack(substr($fon,strpos($fon,"\r\n")));
$fon="";
}
if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) {
DebugAttack(substr($email,strpos($email,"\r\n")));
$email="";
}
if(strpos($UPFILE,"\r\n")>0 || strpos($UPFILE,"\n")>0) {
DebugAttack(substr($UPFILE,strpos($UPFILE,"\r\n")));
$UPFILE="";
}
// wir setzen einen Flag, um Fehler zu registrieren
$ok=true;
//jetzt werden die Felder überprüft
if ((!(preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$name))) && (strlen($name)>3) || $name=="")
{
$err[0]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Bitte kontrollieren Sie den angegebenen Namen.<br>'; // Fehlertext
}
if ((!(preg_match("/^[0-9]{5}$/",$plz))) && (strlen($plz)<4) || $plz=="")
{
//PLZ ist ungültig
$err[1]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene Postleitzahl.<br>';
}
if ((!(preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$ort))) && (strlen($ort)>3) || $ort=="")
{
//Ort ist ungültig
$err[2]=true;
$ok=false;
$error.='Bitte kontrollieren Sie den angegebenen Ort.<br>';
}
if ((!(preg_match("/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/",$strasse))) && (strlen($strasse)>3) || $strasse=="")
{
//Strasse ist ungültig
$err[3]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene Strasse.<br>';
}
if ((!(preg_match("/^[a-zA-Z0-9]+$/s",$nr))) && (strlen($nr)>1) || $nr=="")
{
//Nr ist ungültig
$err[4]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene Nummer.<br>';
}
if ((!(preg_match("/^[0-9\+\(\)\/\-\s]+$/",$fon))) && (strlen($fon)>5) || $fon=="")
{
//Telefonnummer ist ungültig
$err[5]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene Telefonnummer.<br>';
}
if ((!(preg_match("/^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$/",$email))) && (strlen($email)>3) || $email=="")
{
//email-Adresse ist ungültig
$err[6]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
}
// Upload-Feld überprüfen
if (empty($UPFILE)) {
$err[7]=true;
$ok=false;
$error.='Bitte kontrollieren Sie das Feld Dateianhang.<br>';
}
if (!isset($_POST['senden'])) {
// Uploadform ausgeben
} else {
//-----------------------------------------------------------------//
// Upload ausfuehren
//-----------------------------------------------------------------//
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
// Zeichenfilter
$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');
// Dateiendung ermitteln
$punkt = strrpos($File, '.');
$laenge = strlen($File);
$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
$dname = substr($File, 0, -($laenge - $punkt - 1));
// Fehlerausgabe wenn Dateiendung nicht erlaubt
if (!in_array($endung, $arr_erlaube_dateityp)) {
//Falsche Dateiendung
$err[8]=true;
$ok=false;
$error.="Die Dateiendung <b>$endung</b> ist nicht erlaubt.<br>";
}
// Dateigroessencheck
if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size * 1024)) {
$zugross = round($_FILES['UPFILE']['size'][$i]/1024, 2);
$err[9]=true;
$ok=false;
$error.="Datei zu groß<br>";
}
$dateipfad_name = $pdfpfad.$File;
// hochgeladene Daeien speichern
move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $dateipfad_name);
// Erfolgs-Meldung ausgeben
echo "Der Upload war erfolgreich";
}
}
// ist alles ok ? dann senden
if($ok)
{
// --------------------------------------------------------------------------------
// Wurde das Script bisher nicht abgebrochen, wurde das Formular korrekt ausgefüllt
// --------------------------------------------------------------------------------
// Template mit dem Mailbody laden und für den Versand vorbereiten
$mailbody = file_get_contents( 'ordermailbody.txt' );
// Platzhalter mit den Benutzereingaben ersetzen
$mailbody = str_replace( '###FIRMA###', htmlspecialchars( $firma ), $mailbody );
$mailbody = str_replace( '###NAME###', htmlspecialchars( $name ), $mailbody );
$mailbody = str_replace( '###PLZ###', htmlspecialchars( $plz ), $mailbody );
$mailbody = str_replace( '###ORT###', htmlspecialchars( $ort ), $mailbody );
$mailbody = str_replace( '###NR###', htmlspecialchars( $nr ), $mailbody );
$mailbody = str_replace( '###FON###', htmlspecialchars( $fon ), $mailbody );
$mailbody = str_replace( '###EMAIL###', $email, $mailbody );
$mailbody = str_replace( '###MITTEILUNGEN###', nl2br( htmlspecialchars( $mitteilungen ) ), $mailbody );
// Mail Header erstellen
$mailheader = "From: Mustermann<noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
$mailheader .= "Reply-To: " .$name. "<" .$email. ">\r\n";
$mailheader .= "Return-Path: noreply@" .$_SERVER['SERVER_NAME']. "\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
$mailheader .= "Content-Transfer-Encoding: 8bit\r\n";
$mailheader .= "Message-ID: <" .time(). " order@" .$_SERVER['SERVER_NAME']. ">\r\n";
$mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";
$subject="Bestellung vom ".date("d.m.Y");
// Email versenden
if (@mail( $empfaenger, $subject, $mailbody, $mailheader ))
{
// Bei erfolgreichem Versand Bestätigung verschicken
$mailheader = "From: Mustermann<mail@muster.de>\r\n";
$mailheader .= "Reply-To: Mustermann<mail@muster.de>\r\n";
$mailheader .= "Return-Path: muster@" .$_SERVER['SERVER_NAME']. "\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
$mailheader .= "Content-Transfer-Encoding: 8bit\r\n";
$mailheader .= "Message-ID: <" .time(). " order@" .$_SERVER['SERVER_NAME']. ">\r\n";
$mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";
// Inhalt der Bestätigung
$mailbody = 'Vielen Dank für Ihre Email. Wir werden uns in Kürze bei Ihnen melden.';
// Bestätigung verschicken
if (@mail( $email, "Die Firma Max Mustermann bedankt sich", $mailbody, $mailheader ))
{
//Alles ok, Seite neuladen (Reloadsperre)
header("Location:$pagename?success");
}
else
{
$error='<h3>Fehler beim Mailen aufgetreten</h3>';
}
}
else
{
// Fehler ausgeben
$error='<p class="error">'.$error.'</p>';
}
}
?> Das Problem mit dem Upload-Feld habe ich immer noch. Also wenn ich alle Daten eintrage, schickt er mir zwar die Datei weg, aber bringt mir beim Reload die Fehlermeldung, dass der Dateianhang leer ist. Das wiederum blockiert meine Mailfunktion. Habt Ihr vielleicht noch ein Tipp? |