<?php
/** * * 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','form.php');
// E-Mailadresse
define ('MAIL_SENDER','tibor@brillant-design.com'); # 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:nr"); # 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',1); # 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,nnr";
$USER_MAIL_TEXT .="Ihre Mitteilung hatte folgenden Inhalt:rnntStrasse HausNr.: %s %srnntPlz Ort: %s %srntTelefon: %s %srntE-Mail: %srnnt";
$USER_MAIL_TEXT .="Mitteilung:rnt%s";
if(FILE_UPLOAD)
{$USER_MAIL_TEXT .= "rnntDateiname: %s"; }
$USER_MAIL_TEXT .= "rnnSie 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>";
}
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'."rn";
$header .= 'Content-type: text/html; charset='. MAILCHARSET ."rn";
$header .= 'From: <'. MAIL_SENDER .'>';
if(isset($htmlAddress[$m_anrede])) { $anrede = $htmlAddress[$m_anrede]; }
else { $anrede = ''; }
// Mitteilungstext für den Seiteninhaber
$mailTextWM = sprintf("%srnAnrede: %snrVorname Name: %s %snrStrasse /
HsNr: %s %snrPLZ Wohnort: %s %snrTelefon: %s %snrE-Mail:
%snrMitteilung:nnr%srnnDateiname: %srnnnMitgeteilt 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();
}
}
?>
<!-- Dieser HTML Teil kann entweder direkt unterhalb
des obigen PHP-Teil oder in ein Template kopiert werden oder alternativ in
eine andere PHP-Datei.Es ist jedoch zwingend erforderlich, dass PHP-Code
korrekt geparst wird. Das Tabellelayout ist lediglich als Beispiel.-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body { background: #fffbd7; margin: 0 0 0 0; }
.text {
font-family: verdana, arial, helvetica, sans-serif; font-style: normal;
font-size: 0.8em; font-weight: normal; color: #333; }
.error {
font-family: verdana, arial, helvetica, sans-serif; font-style: normal;
font-size: 0.9em; font-weight: normal; font-weight: bold; color:
#CC0000; }
table { margin-left: auto; margin-right: auto; }
td {
background: #edebd3; }
</style>
</head>
<body class="text">
<?php
// Bereich für Fehlerausgabe
if((int)$error_a) { echo '<p align="center" class="error">'. _E($error_a) .'</p>';}
?>
<form action="<?php echo ACTION_PATH; ?>"method="post"<?php echo ENCTYPE; ?>>
<input type="hidden" name="action"value="1" />
<table width="70%" cellspacing="2" cellpadding="5"border="0">
<tr>
<td colspan="2"><p align="center"><b>Kontakt</b></p><p align="right">* =Optional</p></td>
</tr>
<tr>
<td>Anrede *</td>
<td><select name="anrede"><?php _selectAddress($htmlAddress, $m_anrede);?></select></td>
</tr>
<tr>
<td>Vorname</td>
<td><input type="text" name="vorname" size="40" value="<?php if(isset($_POST['vorname'])) { echo $_POST['vorname']; } ?>"/></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" name="fname" size="40" value="<?php if(isset($_POST['fname'])) { echo $_POST['fname']; } ?>"/></td>
</tr>
<tr>
<td>Strasse / Haus.-Nr. *</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>PLZ / Wohnort *</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>Telefon *</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>Ihre E-Mailadresse</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">Mitteilung</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="Mittelungsenden" /></p></td>
</tr>
</table>
</form>
</body>
</html>