Frage wegen Formular mit PHP

Peter Klein

Erfahrenes Mitglied
Hallo,

ich habe unten den Code von einem kleinen Kontaktformular.

Gibt es irgendwas was man noch verbessern könnte von der Programmierung her? Ich denke es kommen dann Vorschläge bez. OOP, aber da muss ich mich erst mal reinarbeiten.

Und eine Sache frage ich mich. Ich lasse ja per PHP die Felder ausgefüllt falls was falsch ist, aber bei der Textarea klappt das nicht. Woran hängt das?

Lg

Peter

PHP:
<?php

error_reporting(E_ALL);

function valid_email($str)
	{
		return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
	}
		
		$empfaenger			=	'postmaster@localhost';
		
		$fehler				=	'';
		$ok					=	'';
		
if ( isset($_POST['absenden']) ) {
		$ausgabe_name		=	'';
		$ausgabe_telefon	=	'';
		$ausgabe_email		=	'';
		$ausgabe_text		=	'';
		$ausgabe_betreff	=	'';
		$ausgabe_rueckruf	=	'';
		$ausgabe_ipadresse	=	"IP-Adresse: " . $_SERVER['REMOTE_ADDR'] . "\n";
		

	if ( isset($_POST['name']) && $_POST['name'] != '' ) {
		$ausgabe_name	.=	'Name: ' . htmlspecialchars($_POST['name']) . "\n";
	}else {
		$fehler	.=	"<span style=\"color: red;\">Bitte den Namen angeben!</span><br />";
	}
	
	if ( isset($_POST['telefon']) && $_POST['telefon'] != '' ) {
		$ausgabe_telefon	.=	'Telefonnummer: ' . htmlspecialchars($_POST['telefon']) . "\n";
	}
	
	if ( isset($_POST['emailadresse']) && $_POST['emailadresse'] != '' && valid_email($_POST['emailadresse'])== TRUE ) {
		$ausgabe_email	.=	'E-Mailadresse: ' . htmlspecialchars($_POST['emailadresse']) . "\n";
	}else {
		$fehler .= "<span style=\"color: red;\">E-Mailadresse korrekt?</span><br />";
	}
	
	if ( isset($_POST['betreff']) && $_POST['betreff'] != '' ) {
		$ausgabe_betreff	.=	'Betreff: ' . htmlspecialchars($_POST['betreff']) . "\n";
	}
	
	if ( isset($_POST['texteingabe']) && $_POST['texteingabe'] != '' ) {
		$ausgabe_text	.=	'Anschreiben: ' . htmlspecialchars($_POST['texteingabe']) . "\n";
	}else {
		$fehler .= "<span style=\"color: red;\">Bitte eine Nachricht angeben!</span>";
	}
	
	if ( isset($_POST['rueckruf'])) {
		$ausgabe_rueckruf	.=	'Kunde bittet um R&uuml;ckruf.' . "\n";
	}
	
	$emailinhalt	=	$ausgabe_name . $ausgabe_text . $ausgabe_telefon . $ausgabe_email . $ausgabe_rueckruf . $ausgabe_ipadresse;
	
	if ($fehler == '') {
      @mail($empfaenger, $_POST['betreff'] . " von " . $_POST['name'], $emailinhalt);
	  $ok	=	"<div style=\"text-align:center; border: 1px solid #000;background: #ccc;\">Die E-Mail wurde versendet,<br /> vielen Dank f&uuml;r Ihre Anfrage.</div>";
    } else {
      $fehlerausgabe	=	$fehler;
    }

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="de" />
<title>Kontaktformular</title>
</head>
<body>

			<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" id="kontaktformular">
				<?php echo $ok; ?>
				<?php echo $fehler; ?>
				<dl>	
					<dt><label for="name">Name:<span class="kleinrot">*</span> </label></dt>	
					<dd><input type="text" name="name" id="name" value="
					<?php if(isset($_POST['name']) && $_POST['name']){
					echo htmlspecialchars($_POST['name']);
					} ?>" />
					</dd>
				
					<dt><label for="telefon">Telefon: </label></dt>
					<dd><input type="text" name="telefon" id="telefon" value="
					<?php if(isset($_POST['telefon']) && $_POST['telefon']){
					echo htmlspecialchars($_POST['telefon']);
					} ?>" /></dd>
					
					<dt><label for="emailadresse">E-Mail:<span class="kleinrot">*</span> </label></dt>
					<dd><input type="text" name="emailadresse" id="emailadresse" value="
					<?php if(isset($_POST['emailadresse']) && $_POST['emailadresse']){
					echo htmlspecialchars($_POST['emailadresse']);
					} ?>" /></dd>
				
					<dt><label for="betreff">Betreff: </label></dt>
					<dd><select name="betreff" id="betreff">
					<option value="Sonstiges"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Sonstiges') {
					echo 'selected="selected"';
					} ?>>Sonstiges</option>
					<option value="Webseitenerstellung"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Webseitenerstellung') {
					echo 'selected="selected"';
					} ?>>Anfrage Webseitenerstellung</option>
					<option value="Zusammenarbeit"
					<?php if(isset($_POST['betreff']) &&$_POST['betreff'] == 'Zusammenarbeit') {
					echo 'selected="selected"';
					} ?>>Zusammenarbeit</option>
					</select></dd>
				
					<dt>Ihre Nachricht:<span class="kleinrot">*</span> </dt>
					<dd><textarea name="texteingabe" id="texteingabe" cols="25" rows="5"></textarea></dd>

					<dd><input type="checkbox" name="rueckruf" id="rueckruf" value="rueckruf"
					<?php if(isset($_POST['rueckruf']) && $_POST['rueckruf'] == 'rueckruf'){
					echo 'checked="checked" ';
					} ?> />Bitte um R&uuml;ckruf</dd>
					<dd><span class="kleinrot">* erforderlich</span></dd>
					<dd><input type="submit" name="absenden" id="absenden" value="Abschicken" />
					<input type="reset" name="resetall" id="resetall" value="Zur&uuml;cksetzen" /></dd>
				</dl>
			</form>
		
</body>
</html>
 
Textareas haben keinen Value-Wert, wenn du das vorbelegen willst musst du das zwischen die <textarea>-Tags packen, also so:
HTML:
<textarea>Vorrgegebener Text</textarea>

P.S. Und es wäre vielleicht auch schön, die Fehlermeldung direk über dem Eingabefeld ausgeben zu lassen, das erhöht deutlich die Lesbarkeit eines Fomulars;)
 
Zuletzt bearbeitet:
Hi,

Danke für die schnelle Antwort. Jetzt wo du es sagst, glaube ich sowas schon mal gehört zu haben. Ich stand wohl auf dem Schlauch.

Danke Dir.
 
Zurück