<?
/**
*
* Dieser nun folgende PHP-Teil kommt in die Datei form.php ganz oben oder an erster Stelle.
* Er muss lediglich im ganannten Bereich ".. ---- ab hier anpassen ---..." angepasst werden
*
* Eine Danke- oder Mailbestätigungsseite muss noch erstellt werden. Allerdings ist in der
* Einstellungmöglichkeit schon eine URL vorbereitet und muss lediglich per path und Dateiname
* angepasst werden.
*
*/
error_reporting(E_ALL);
/* --------------------------------------------- ab hier anpassen -------------------- */
// Errormitteilungen (entsprechende Texte anpassen)
define('ERROR_1', 'Ihre E-Mailadresse ist nicht vorhanden.');
define('ERROR_2', 'Ihre E-Mailadresse ist ungültig.');
define('ERROR_3', 'Ohne Mitteilung kein Kontakt.');
define('ERROR_4', 'Sie haben keinen Familiennamen angegeben.');
define('ERROR_5', 'Sie haben keinen Vornamen angegeben.');
define('ERROR_6', 'Ein leeres Formular nützt nichts.');
define('ERROR_7', 'Die ausgewählte Datei ist zu groß.');
define('ERROR_8', 'Die ausgewählte Datei hat nicht den erlaubten Dateitype');
// Aktionpath - diese Einstellung nur verwnden, wenn der HTML-Teil unterhalb des PHP-Teil folgt
// wie in diesem vorhandenen Beispiel
define('ACTION_PATH', 'kontakt.php');
// E-Mailadresse
define('MAIL_SENDER', 'dkwdesign@yahoo.de'); # Deine E-Mail-Adresse (From)
//Mail Betreff-Texte
define('MAIL_SUBJECT_A','Kontaktmitteilung aus Formular'); # Betreff für Adminmail (Mail erhält Admin)
// Mail-Betreff für User
define('MAIL_SUBJECT_K','Ihre Kontaktmitteilung'); # Betreff für Mailkopie (Mail erhält User)
// Charset für E-Mailinhalt
define('MAILCHARSET', 'utf-8'); # oder z.B. iso-8859-1
// Starttext für Webmastermail
define('STARTTEXT',"Mitteilung vom Webformular:\n\r"); # wichtig hier die " belassen!
// mail Kopie an User und Aktivierung der Checkbox für Mailkopie
define('MAIL_KOPIE', 1); # kann mit 0 deaktiviert werden
// OPTIONAL - ermöglicht einen Dateiupload
define('FILE_UPLOAD', 0); # kann mit 0 deaktiviert werden
// dateigröße für Dateiupload
define('FILE_SIZE', 1000000); # Angabe in Bytes. Ein MB entspricht 1000000 Bytes
// absoluter path für das speichern der hochzuladenden Datei
// die Variable $_SERVER['DOCUMENT_ROOT'] ist das Hauptrootverzeichnis des Server
// ergänze nun das Verzeichnis, in welches die Dateien gespeichert werden und
// hänge an das Ende ein / (Beispiel: $_SERVER['DOCUMENT_ROOT'] .'/images/
define('FILE_SAVE_PATH', $_SERVER['DOCUMENT_ROOT'] .'/images/');
define('ENCTYPE', ' enctype="multipart/form-data"');
// Seitenangabe, auf welche Seite bei erfolgreicher Übermittlung weitergeleitet werden soll
define('LOCATION', $_SERVER['HTTP_HOST'] .'/emailok.php'); # relativer path!
// %s stehen für einen Platzhalter und gleichzeitig als String
$USER_MAIL_TEXT = "Sehr geehrte/r %s %s %s,\n\n\r";
$USER_MAIL_TEXT .= "Ihre Mitteilung hatte folgenden Inhalt:\r\n\n\tStrasse HausNr.: %s %s\r\n\n\tPlz Ort: %s %s\r\n\tTelefon: %s %s\r\n\tE-Mail: %s\r\n\n\t";
$USER_MAIL_TEXT .= "Mitteilung:\r\n\t%s";
if(FILE_UPLOAD) { $USER_MAIL_TEXT .= "\r\n\n\tDateiname: %s"; }
$USER_MAIL_TEXT .= "\r\n\nSie erhalten in den nächsten Tagen eine Rückmeldung von mir.";
// wenn die Liste erweitert werden muss einfach ein , und dann die nächstfolgende
// Zahl. Bsp: , 4 => 'irgendwas'
// ); muss immer vorhanden sein
$htmlAddress = array(0 => 'Optional', 1 => 'Frau', 2 => 'Herr', 3 => 'Firma');
// array mit mimeTypen für ein Dateiupload wie in diesem Beispiel mit image.
// das Array kann beliebig erweitert werden. Wichtig ist nur, dass die Typen entsprechend
// deklariert werden.
$fileTypes = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif');
/* ------------------------------- ab hier nicht ändern bzw. erst wieder ab HTML-Teil -------------------- */
/**
* function _gp($var)
*
* @param int/string $var
* @return int/string
*/
function _gp($var) {
if(isset($var)) {
$val = isset($_POST[$var]) ? $_POST[$var] : '';
return trim($val);
}
}
/**
* function _selectAddress($htmlAddress, $select)
*
* @param array $htmlAddress
* @param string $select
* @return string
*/
function _selectAddress($htmlAddress, $select) {
if(is_array($htmlAddress)) {
$ret = '';
foreach($htmlAddress AS $k => $v) {
if(isset($select) && $select == $k) { $selected = ' selected="selected"'; }
else { $selected = ''; }
$ret .= "<option value=\"$k\"$selected>$v</option>\n";
}
return print $ret;
} else {
return print 'Es wurde keine Anrede definiert.';
}
return print $ret;
}
/**
* function _E($int)
*
* @param integer $int
* @return string
*/
function _E($int) {
$array = array( 1 => ERROR_1,
2 => ERROR_2,
3 => ERROR_3,
4 => ERROR_4,
5 => ERROR_5,
6 => ERROR_6,
7 => ERROR_7,
8 => ERROR_8
);
if($array[$int]) return $array[$int];
}
/**
* function checkMail($mailAdresse)
*
* @param string $mailAdresse
* @return boolean
*/
function checkMail($mailAdresse) {
if(isset($mailAdresse)) {
// Prüft auf PHP-Version
if(phpversion() >= '5.2.0') {
// prüft per filter_var und Parameter FILTER_VALIDATE_EMAIL
if(!filter_var($mailAdresse, FILTER_VALIDATE_EMAIL)) { return 2; }
return false;
} else {
// Prüft ob E-Mailadresse ungültig
if(preg_match('/^[^s@_]+@[^s@]+.[a-z]{2,4}$/', $mailAdresse)) { return 2; }
return false;
}
} else {
return 1;
}
}
/**
* checkFile($file)
*
* @param array $file
* @param array $types
* @return boolean
*/
function checkFile($file, $types = array()) {
if( isset($file['tmp_name']) && $file['tmp_name'] != '' &&
isset($file['name']) && $file['name'] != '') {
$size = $file['size'];
$type = $file['type'];
if($size > FILE_SIZE) { return 7; }
elseif(isset($types) && !in_array($type, $types)) { return 8; }
else { return false; }
}
}
/**
* function fileUpload($file)
*
* @param array $file
* @param integer $action wird zur prüfung auf Fehler verwendet.
* 1 prüft auf Fehler
* 2 erlaubt den Dateiupload
* @return array $array
*/
function fileUpload($file = array()) {
if(isset($file['tmp_name']) && isset($file['name'])) {
$tmp = $file['tmp_name'];
$name = $file['name'];
$type = $file['type'];
$dateiendung = preg_replace('#[a-z+]+/#i', '', $type);
$filename = date('d_m_Y').'_'. time() .'.'. $dateiendung;
if(move_uploaded_file($tmp, FILE_SAVE_PATH . $filename)) {
$array = array(0 => $filename, 1 => $name);
return $array;
}
} else {
return;
}
}
$textmitteilung = ''; // Variable indiziert
$error_a = 0;
$checkedKopie = '';
$fileName = '';
$m_anrede = _gp('anrede');
if(intval(_gp('action')) == 1) {
// Prüft, ob die E-Mail-Adresse angegeben wurde.
if($m_email = _gp('email')) {
$error_a = checkMail($m_email);
} else {
$error_a = 1;
}
// Prüft, ob eine Mitteilung erfolgte. Wenn nicht, gibt es eine Fehlermeldung.
if(!$m_mitteilung = _gp('mitteilung')) { $error_a = 3; }
// Prüft, ob der Familienname angegeben wurde. Wenn nicht erfolgt eine Fehlermeldung.
if(!$m_fname = _gp('fname')) { $error_a = 4; }
// Prüft, ob der Vorname angegeben wurde. Wenn nicht, erfolgt eine Fehlermeldung
if(!$m_vorname = _gp('vorname')) { $error_a = 5; }
// prüft ob die Uploaddatei erlaubt ist
if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 7) { $error_a = 7; }
if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 8) { $error_a = 8; }
// prüfe ob User Mailkopie wünscht
if($mailKopie = _gp('kopie') == 1) { $checkedKopie = ' checked="checked"'; }
// Prüft, ob eine Anrede ausgewählt wurde, wenn nicht
if(!$m_anrede = _gp('anrede')) { $m_anrede = ""; }
// Prüft, ob eine Strasse angegeben wurde. Wenn nicht, bleibt die Variable leer.
if(!$m_strasse = _gp('strasse')) { $m_strasse = ''; }
// Prüft, ob die Hausnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
if(!$m_hausnummer = _gp('hausnummer')) { $m_hausnummer = ''; }
// Prüft, ob eine PLZ angegeben wurde. Wenn nicht, bleibt die Variable leer.
if(!$m_plz = _gp('plz')) { $m_plz = ''; }
// Prüft, ob ein Wohnort angegeben wurde. Wenn nicht, bleibt die Variable leer.
if(!$m_ort = _gp('ort')) { $m_ort = ''; }
// Prüft, ob eine Vorwahl angegeben wurde. Wenn nicht, bleibt die Variable leer.
if(!$m_vw = _gp('vw')) { $m_vw = ''; }
// Prüft, ob die Rufnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
if($m_rn = _gp('rn')) { $m_rn = ' / '. $m_rn; }
// Prüft, ob alle Pflichtfelder vorhanden sind.
if(!$error_a) {
$fileNameAdmin = '';
$fileNameUser = '';
if(FILE_UPLOAD && is_array($_FILES['file'])) {
$fileName = fileUpload($_FILES['file']);
$fileNameAdmin = $fileName[0];
$fileNameUser = $fileName[1];
}
// Mailbedingungen in From von MIME und HTML
$header = 'MIME-Version: 1.0'."\r\n";
$header .= 'Content-type: text/html; charset='. MAILCHARSET ."\r\n";
$header .= 'From: <'. MAIL_SENDER .'>';
if(isset($htmlAddress[$m_anrede])) { $anrede = $htmlAddress[$m_anrede]; }
else { $anrede = ''; }
// Mitteilungstext für den Seiteninhaber
$mailTextWM = sprintf("%s\r\nAnrede: %s\n\rVorname Name: %s %s\n\rStrasse / HsNr: %s %s\n\rPLZ Wohnort: %s %s\n\rTelefon: %s %s\n\rE-Mail: %s\n\rMitteilung:\n\n\r%s\r\n\nDateiname: %s\r\n\n\nMitgeteilt am: %s",
STARTTEXT,
$anrede,
$m_vorname,
$m_fname,
$m_strasse,
$m_hausnummer,
$m_plz,
$m_ort,
$m_vw,
$m_rn,
$m_email,
$m_mitteilung,
$fileNameAdmin,
date('d.m.Y, H:i:s'));
// E-Mail an Seiteninhaber wird gesendet.
mail(MAIL_SENDER, MAIL_SUBJECT_A, $mailTextWM, $header);
// Bestätigungsmail an Absender
if(defined('MAIL_KOPIE') && MAIL_KOPIE == 1 && $mailKopie == 1) {
// Textzusammenstellung für den Absender
$msgUser = sprintf( $USER_MAIL_TEXT,
$anrede,
$m_vorname,
$m_fname,
$m_strasse,
$m_hausnummer,
$m_plz,
$m_ort,
$m_vw,
$m_rn,
$m_email,
$m_mitteilung,
$fileNameUser);
// Senden der Bestätigungsmail an den Formularausfüllenden.
mail($m_email, MAIL_SUBJECT_K, $msgUser, $header);
}
// Nun leite um auf die Empfangsbestätigungs-Seite emailok.php.
header('Location: '.LOCATION);
exit();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- CSS-Datei Allgemine Einstellungen -->
<link href="css/design/allgemein.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Header -->
<link href="css/design/header.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für das Menü -->
<link href="css/design/menue.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Slider -->
<link href="css/design/slider.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Blog -->
<link href="css/design/blog.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für das Formular -->
<link href="css/design/formular.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Footer -->
<link href="css/design/footer.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
// Bereich für Fehlerausgabe
if((int)$error_a) {
echo '<p align="center" class="error">'. _E($error_a) .'</p>';
}
?>
<div class="main">
<div class="header">
<div class="block_header">
<div class="logo"><img src="http://www.psd-tutorials.de/modules/Forum/images/header/logoneu.gif" width="532" height="98" /></div>
<div class="menu">
<ul>
<li><a href="index.html" ><span>Home</span></a></li>
<li><a href="team.html"><span>Team</span></a></li>
<li><a href="services.html"><span>Service</span></a></li>
<li><a href="portfolio.html"><span>Portfolio</span></a></li>
<li><a href="kontakt.html" class="active"><span>Kontakt</span></a></li>
</ul>
</div>
<div class="clr"></div>
</div>
</div>
<div class="header_top">
<div class="header_top_resize">
<img src="http://www.psd-tutorials.de/modules/Forum/images/header/01_headerneu.jpg" width="614" height="135" alt="header" /></div>
<div class="clr"></div>
</div>
<div class="clr"></div>
<div class="body">
<div class="body_resize">
<div class="sitetopkontakt">
<div class="layerleft">
</div>
<div class="layerright"></div>
</div>
<form action="<?php echo ACTION_PATH; ?>" method="post"<?php echo ENCTYPE; ?>>
<input type="hidden" name="action" value="1" />
<table width="100%" cellspacing="0" cellpadding="2" border="0">
<tr>
<td colspan="2">
<h2>Kontaktformular<br /></h2>
<p>Wir helfen Ihnen gerne weiter! Treten Sie mit uns in Kontakt ? wir freuen uns auf Sie! Nutzen Sie das für Sie vorbereitete Kontaktformular. Bitte füllen Sie folgende Felder zu Ihren persönlichen Daten aus:
<br /> Felder mit einem * sind optional
</p></td>
</tr><tr>
<td><b>Anrede *</b></td>
<td><select name="anrede">
<?php
_selectAddress($htmlAddress, $m_anrede);
?>
</select>
</td>
</tr><tr>
<td><b>Vorname</b></td>
<td><input type="text" name="vorname" size="40" value="<?php if(isset($_POST['vorname'])) { echo $_POST['vorname']; } ?>" /></td>
</tr><tr>
<td><b>Name</b></td>
<td><input type="text" name="fname" size="40" value="<?php if(isset($_POST['fname'])) { echo $_POST['fname']; } ?>" /></td>
</tr>
<tr>
<td><b>Strasse / Haus.-Nr. *</b></td>
<td>
<input type="text" name="strasse" size="40" maxlength="100" value="<?php if(isset($_POST['strasse'])) { echo $_POST['strasse']; } ?>" />
<input type="text" name="hausnummer" size="5" maxlength="8" value="<?php if(isset($_POST['hausnummer'])) { echo $_POST['hausnummer']; } ?>" />
</td>
</tr>
<tr>
<td><b>PLZ / Wohnort *</b></td>
<td>
<input type="text" name="plz" size="5" maxlength="5" value="<?php if(isset($_POST['plz'])) { echo $_POST['plz']; } ?>" />
<input type="text" name="ort" size="40" maxlength="100" value="<?php if(isset($_POST['ort'])) { echo $_POST['ort']; } ?>" />
</td>
</tr>
<tr>
<td><b>Telefon *</b></td>
<td>
<input type="text" name="vw" size="10" maxlength="5" value="<?php if(isset($_POST['vw'])) { echo $_POST['vw']; } ?>" /> /
<input type="text" name="rn" size="10" maxlength="15" value="<?php if(isset($_POST['rn'])) { echo $_POST['rn']; } ?>" />
</td>
</tr>
<tr>
<td><b>Ihre E-Mailadresse</b></td>
<td>
<input type="text" name="email" size="30" maxlength="50" value="<?php if(isset($_POST['email'])) { echo $_POST['email']; } ?>" />
</td>
</tr>
<tr>
<td valign="top"><b>Mitteilung</b></td>
<td>
<textarea name="mitteilung" cols="60" rows="10"><?php if(isset($_POST['mitteilung'])) { echo $_POST['mitteilung']; } ?></textarea>
</td>
</tr>
<?php
if(MAIL_KOPIE === 1) {
?>
<tr>
<td>Wünschen Sie eine Kopie</td>
<td><input type="checkbox" value="1" name="kopie"<?php echo $checkedKopie; ?> /></td>
</tr>
<?php
}
if(FILE_UPLOAD === 1) {
?>
<tr>
<td>Bilddatei anhängen</td>
<td><input type="file" size="50" name="file" /></td>
</tr>
<?php } ?>
<tr>
<td colspan="2">
<p align="center"><input type="submit" value="Mittelung senden" /></p>
</td>
</tr>
</table>
</form>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="footer">
<div class="footer_resize">
<p class="leftt">© Copyright 2010. Reinigungsservice Enzian<br />
<a href="index.html">Home</a> | <a href="kontakt.html">Kontakt</a> | <a href="kontakt.html">Impressum </a></p>
<div class="clr"></div>
<div class="clr"></div>
</div>
</div>
</body>
</html>
Code in der emailok.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- CSS-Datei Allgemine Einstellungen -->
<link href="css/design/allgemein.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Header -->
<link href="css/design/header.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für das Menü -->
<link href="css/design/menue.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Slider -->
<link href="css/design/slider.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Blog -->
<link href="css/design/blog.css" rel="stylesheet" type="text/css" />
<!-- CSS-Datei für den Footer -->
<link href="css/design/footer.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
<div class="header">
<div class="block_header">
<div class="logo"><a href="index.html"><img src="http://www.psd-tutorials.de/modules/Forum/images/header/logoneu.gif" alt="logo" width="532" height="98" border="0" class="logo" /></a></div>
<div class="menu">
<ul>
<li><a href="index.html" ><span>Home</span></a></li>
<li><a href="team.html"><span>Team</span></a></li>
<li><a href="services.html"><span>Service</span></a></li>
<li><a href="portfolio.html" class="active"><span>Portfolio</span></a></li>
<li><a href="kontakt.html"><span>Kontakt</span></a></li>
</ul>
</div>
<div class="clr"></div>
</div>
</div>
<div class="header_top">
<div class="header_top_resize">
<img src="http://www.psd-tutorials.de/modules/Forum/images/header/01_headerneu.jpg" width="614" height="135" alt="header" /></div>
<div class="clr"></div>
</div>
<div class="clr"></div>
<div class="body">
<div class="body_resize">
<div class="sitetop">
<div class="floatleft">
<div class="blogleft">
<h2>Bestätigung</h2>
<p>Vielen Dank für Ihre Mitteilung. Sie erhalten eine E-Mail zur Bestätigung.</p>
</div>
</div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="footer">
<div class="footer_resize">
<p class="leftt">© Copyright 2010. Reinigungsservice Enzian<br />
<a href="index.html">Home</a> | <a href="kontakt.html">Kontakt</a> | <a href="kontakt.html">Impressum </a></p>
<div class="clr"></div>
<div class="clr"></div>
</div>
</div>
</div>
</body>
</html>