Blubberstrahl
Newbie
- Registriert
- Aug. 2009
- Beiträge
- 4
Seas, ich hab für die HP von ner bekannten erstmals mit php rumgespielt und das Reservierungsformular mit php ausgewertet (habs vorher mit action="mailto:..." gemacht, aber das is ja ein bissl umständlich auf user-seite)
Das Script steht soweit ja auch und schickt mir die Mail mit den Daten. Allerdings werden die Umlaute aus den Textfeldern komisch enkodiert (obwohl ich überall utf-8 angegeben hab).
Desweiteren ist meine Rangehensweise doch recht umständlcih, ich übergebe jedes einzelne POST per Hand an eine Variable, das muss doch auch einfacher gehen, immerhin ist POST ja schon ein array, wenn ich das richtig verstanden hab.
Und die Sicherheit macht mir Sorgen, ich kann in die Textfelder html-tags einarbeiten und will gar nich wissen, was man damit alles anstellen kann
hier der code:
Wär nett wenn mir jmd weiterhelfen könnt, bin in Sachen PHP noch totaler Newbie
Das Script steht soweit ja auch und schickt mir die Mail mit den Daten. Allerdings werden die Umlaute aus den Textfeldern komisch enkodiert (obwohl ich überall utf-8 angegeben hab).
Desweiteren ist meine Rangehensweise doch recht umständlcih, ich übergebe jedes einzelne POST per Hand an eine Variable, das muss doch auch einfacher gehen, immerhin ist POST ja schon ein array, wenn ich das richtig verstanden hab.
Und die Sicherheit macht mir Sorgen, ich kann in die Textfelder html-tags einarbeiten und will gar nich wissen, was man damit alles anstellen kann

hier der code:
PHP:
<?php
header ('Content-type: text/html; charset=UTF-8');
// wohin
$empfaenger = "test@bayrischer-hof-breisach.de";
$error = "";
$pagename =$_SERVER['PHP_SELF'];
function getmailtext($strMailtext){
$txt=get_magic_quotes_gpc() ? stripslashes($strMailtext) : $strMailtext;
return $txt;
}
// Felder holen und überprüfen
$vorname = isset($_POST['vorname']) ? getmailtext($_POST['vorname']) : '';
$nachname = isset($_POST['nachname']) ? getmailtext($_POST['nachname']) : '';
$strasse = isset($_POST['strasse']) ? getmailtext($_POST['strasse']) : '';
$nummer = isset($_POST['nummer']) ? getmailtext($_POST['nummer']) : '';
$plz = isset($_POST['plz']) ? getmailtext($_POST['plz']) : '';
$ort = isset($_POST['ort']) ? getmailtext($_POST['ort']) : '';
$phone = isset($_POST['phone']) ? getmailtext($_POST['phone']) : '';
$email = isset($_POST['email']) ? getmailtext($_POST['email']) : '';
$personen = isset($_POST['personen']) ? getmailtext($_POST['personen']) : '';
$zimmer = isset($_POST['zimmer']) ? getmailtext($_POST['zimmer']) : '';
$anreise = isset($_POST['anreise']) ? getmailtext($_POST['anreise']) : '';
$abreise = isset($_POST['abreise']) ? getmailtext($_POST['abreise']) : '';
$besonderheiten = isset($_POST['besonderheiten']) ? getmailtext($_POST['besonderheiten']) : '';
// nur die Felder ausgeben, die auch ausgefüllt werden (müssen)
function getField($fo){
$gibaus = "";
if(isset($fo)){
$gibaus = $fo."\n";
}
return $gibaus;
}
// Formular ist abgescickt und die Eingaben werden überprüft
if(isset($_POST['abschicken'])) {
//Form-Attacken verhindern (suche nach \r\n oder \n)
if(strpos($vorname,"\r\n")>0 || strpos($vorname,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($nachname,"\r\n")>0 || strpos($nachname,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($strasse,"\r\n")>0 || strpos($strasse,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($nummer,"\r\n")>0 || strpos($nummer,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($plz,"\r\n")>0 || strpos($plz,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($ort,"\r\n")>0 || strpos($ort,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($phone,"\r\n")>0 || strpos($phone,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($personen,"\r\n")>0 || strpos($personen,"\n")>0) {
die("YUCK FU!!!!");
}
/* if(strpos($zimmer,"\r\n")>0 || strpos($zimmer,"\n")>0) {
die("YUCK FU!!!!");
} */
if(strpos($anreise,"\r\n")>0 || strpos($anreise,"\n")>0) {
die("YUCK FU!!!!");
}
if(strpos($abreise,"\r\n")>0 || strpos($abreise,"\n")>0) {
die("YUCK FU!!!!");
}
/* if(strpos($besonderheiten,"\r\n")>0 || strpos($besonderheiten,"\n")>0) {
die("YUCK FU!!!!");
} */
// Feldvalidierung
$ok=true;
//jetzt werden die Felder überprüft
if (strlen($vorname)<3) // der Name muss mindestens 3 Zeichen haben
{
$err[0]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Bitte geben Sie Ihren Namen an. (mindestens 3 Zeichen)<br>'; // Fehlertext
}
if (strlen($nachname)<3) // der Nachname muss mind. 3 Zeichen haben
{
$err[1]=true; //Fehler merken
$ok=false; //Fehlerflag setzen
$error.='Bitte geben Sie einen Nachnamen von mind. 3 Zeichen ein.<br>'; // Fehlertext
}
if ( (!(eregi('^[a-z0-9_\.-]+@[a-z0-9_-]+\.[a-z0-9_\.-]+$',$email))) && (strlen($email)>0) || $email=="")
{
//email-Adresse ist ungültig
$err[2]=true;
$ok=false;
$error.='Bitte kontrollieren Sie die angegebene E-Mail-Adresse.<br>';
}
// ist alles ok ? dann senden
if($ok)
{
// ausgefüllte Daten via php versenden
$sender ="Aus der Webseite";
$sendermail =trim($email);
$subject = "Mail aus Webseite - Nachricht vom ".date("d.m.Y");
$header = "From: $sender <$sendermail>\r\n";
//$header .= "Cc: meine@garten.de\r\n";
$header .= "Reply-to: <$sendermail>\r\n";
$header .= "Return-path: <$sendermail>\r\n";
$header .= 'X-Mailer: PHP/' . phpversion() . "\n";
$header .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n";
$header .= "Content-type: text/html\n";
// Mailtext definieren
$mailtext = '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table width="200" border="1">
<tr>
<td>Vorname</td>
<td>'.getField($vorname).'</td>
</tr>
<tr>
<td>Nachname</td>
<td>'.getField($nachname).'</td>
</tr>
<tr>
<td>Straße</td>
<td>'.getField($strasse)." ".getField($nummer).'</td>
</tr>
<tr>
<td>PLZ</td>
<td>'.getField($plz).'</td>
</tr>
<tr>
<td>Ort</td>
<td>'.getField($ort).'</td>
</tr>
<tr>
<td>Telefonnr</td>
<td>'.getField($phone).'</td>
</tr>
<tr>
<td>Email</td>
<td>'.getField($email).'</td>
</tr>
<tr>
<td>Anzahl Personen</td>
<td>'.getField($personen).'</td>
</tr>
<tr>
<td>Gewünschter Zimmertyp</td>
<td>'.getField($zimmer).'</td>
</tr>
<tr>
<td>Anreisetag</td>
<td>'.getField($anreise).'</td>
</tr>
<tr>
<td>Abreisetag</td>
<td>'.getField($abreise).'</td>
</tr>
<tr>
<td>Besonderheiten</td>
<td>'.getField($besonderheiten).'</td>
</tr>
</table>
</body>
</html>
';
//Mail verschicken
if (@mail($empfaenger, $subject, $mailtext, $header)) {
//Alles ok, Seite neuladen
header("Location:$pagename?success");
//falls kein Header gesendet werden kann, dann mit javascript
echo '<script type="text/javascript">document.location.href="'.$pagename.'?success"</script>';
exit;
} else {
$error='<h3>Fehler beim Mailen aufgetreten</h3>';
}
} else {
// Fehler ausgeben
$error='<h3>Fehler bei der Eingabe</h3><p class="error">'.$error.'</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Reservierungsformular</title>
</head>
<body>
<h1>
<?php
if($error!="") echo $error;
if(isset($_GET['success'])) {
//Erfolgsnachricht ausgeben
echo '<p>Vielen Dank für Ihre Reservierungsanfrage. Sie wurde erfolgreich verschickt.</p>
Bitte beachten Sie, dass die Reservierung erst verbindlich ist, wenn Sie von uns eine Rückmeldung erhalten haben';
} else {
// Form ausgeben
?>
</h1>
<table border="0" cellspacing="0" cellpadding="0" width="305">
<tr>
<td class="pageName">Reservierungen</td>
</tr>
<tr>
<td class="bodyText">
<form action="<?php echo $pagename;?>" method="post" name="formmailer">
<br>
<table width="259" border="0" cellspacing="2" cellpadding="0">
<tr>
<td><label>Vorname*</label></td>
<td><input type="text" value="<?php echo $vorname;?>" name="vorname" size="25" border="0" <?php if(isset($err[0])) echo 'class="fehler"';?>></td>
</tr>
<tr>
<td><label>Nachname*</label></td>
<td><input type="text" name="nachname" size="25" border="0" value="<?php echo $nachname;?>" <?php if(isset($err[1])) echo 'class="fehler"';?>></td>
</tr>
<tr>
<td><label>Straße</label></td>
<td><input type="text" name="strasse" id="strasse" size="24" border="0"></td>
</tr>
<tr>
<td><label>Nummer</label></td>
<td><input name="nummer" type="text" id="nummer" size="5" border="0"></td>
</tr>
<tr>
<td><label>PLZ</label></td>
<td><input name="plz" type="text" id="plz" size="5" maxlength="5" border="0"></td>
</tr>
<tr>
<td><label>Wohnort</label></td>
<td><input name="ort" type="text" id="ort" size="24" border="0"></td>
</tr>
<tr>
<td><label>Telefonnummer<br>
(Für Rückfragen)</label></td>
<td><input name="phone" type="text" id="phone" size="24" border="0"></td>
</tr>
<tr>
<td><label>E-mail Adresse*</label></td>
<td><input name="email" value="<?php echo $email;?>" type="text" id="email" size="24" <?php if(isset($err[2])) echo 'class="fehler"';?>></td>
</tr>
<tr>
<td><label>Wieviele Personen? </label></td>
<td><input type="text" name="personen" size="2" border="0"></td>
</tr>
<tr>
<td><label>Gewünschter Zimmer-Typ:
<p><font size="-2">Es stehen zur Auswahl:<br>
- Einzelzimmer ohne Dusche<br>
- Einzelzimmer mit Dusche<br>
- Doppelzimmer ohne Dusche<br>
- Doppelzimmer mit Dusche<br>
- Doppelzimmer mit Dusche und Balkon</font><br>
</p>
<p></p>
</label></td>
<td><textarea name="zimmer" rows="9" cols="40"></textarea></td>
</tr>
<tr>
<td><label>Anreisetag</label></td>
<td><input type="text" name="anreise" size="24" border="0"></td>
</tr>
<tr>
<td><label>Abreisetag</label></td>
<td><input type="text" name="abreise" size="24" border="0"></td>
</tr>
<tr>
<td><label>Besonderheiten (zB TV auf Zimmer)</label></td>
<td><textarea name="besonderheiten" rows="4" cols="40"></textarea></td>
</tr>
<tr>
<td colspan="2">Bitte überprüfen Sie vor dem Abschicken nochmals alle Angaben, die Sie gemacht haben.</td>
</tr>
<tr>
<td colspan="2">Mit * markierte Felder sind Pflicht</td>
</tr>
<tr>
<td><input type="submit" class="button" value="Reservierungsanfrage abschicken" name="abschicken" border="0"> </td>
<td><input type="reset" value="Alle Felder leeren" border="0"></td>
</tr>
</table>
<br>
</form>
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>
Wär nett wenn mir jmd weiterhelfen könnt, bin in Sachen PHP noch totaler Newbie