error reporting [Hilfe/Verbesserung bei Code]

djandy

Mitglied
Hallo an alle,

ich habe ein Problem und zwar wird die Datei kontakt.php in die index.php includet. In der index.php steht ganz am Anfang sesson_start(); drin. Habe die Funktion error_reporting(E_ALL); angeschaltet und bekomme folgende Fehlermeldungen:

Notice: Undefined variable: fehler in C:\xampp\htdocs\homepage_neu\kontakt.php on line 202

Notice: Undefined variable: fehler in C:\xampp\htdocs\homepage_neu\kontakt.php on line 206

Notice: Undefined variable: fehler in C:\xampp\htdocs\homepage_neu\kontakt.php on line 213

Notice: Undefined variable: fehler in C:\xampp\htdocs\homepage_neu\kontakt.php on line 217

Notice: Undefined variable: fehler in C:\xampp\htdocs\homepage_neu\kontakt.php on line 230


Woran liegt das und wie kann ich diese Fehlermeldungen beheben? Achso wäre schön wenn Ihr den Code mal prüft und evtl. Verbesserungen postet. Bin mir mit der Funktion session_start(); auch nicht sicher ob das alles so seine Richtigkeit hat.


Hier mal der Code der kontakt.php

PHP:
<?php
error_reporting(E_ALL);



//Sicherheitscode erstellen
function generateCaptcha($_SESSIONNAME) {



if(trim($_SESSIONNAME) == "")
	die("Sessionname ist leer!");
	
	
	
	//TTF Schriftart für Captcha
	$font = "./xfiles.TTF";
	
	
	
	$image = imagecreate(100, 30);
	imagecolorallocate($image, 204, 204, 204);     //Bild färben, RGB-Farbe (204, 204, 204 = grau)
	
	
	
	$left = 5;
	$signs = "ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz123456789";
	$string = "";
	
	for($i = 1; $i <= 5; $i++) {
	
	$sign = $signs{rand(0, strlen($signs) - 1)};
	
	$string .= $sign;
	imagettftext($image, 20, rand(-10, 10), $left + (($i == 1?5:15) * $i), 25,
	imagecolorallocate($image, 153, 153, 153), $font, $sign);
	imagettftext($image, 16, rand(-15, 15), $left + (($i == 1?5:15) * $i), 25,
	imagecolorallocate($image, 30, 80, 164), $font, $sign);
}
	
	
	$_SESSION[$_SESSIONNAME] = $string;
	
	
	
	header("Content-type: image/png");
	imagepng($image);
	imagedestroy($image);
}


	$sessionName = "captchacode";



if(isset($_GET['captcha'])) {
	generateCaptcha($sessionName);
}



//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------



// Bitte tragen Sie hier Ihre E-Mail Adresse ein - WICHTIG!
$empfaenger = "";



if(isset($_POST['delete'])) {
    unset($_POST);
}



if(isset($_POST['send'])) {
	$name = $_POST['name'];
	$email = $_POST['email'];
	$betreff = $_POST['betreff'];
	$text = $_POST['text'];
    $sicherheitscode = $_POST['sicherheitscode'];

    $datum = date("d.m.Y | H:i");
    $ip = $_SERVER['REMOTE_ADDR'];



if(get_magic_quotes_gpc()) {
	$name = stripslashes($name);
    $email = stripslashes($email);
    $betreff = stripslashes($betreff);
    $text = stripslashes($text);
}



if(empty($name)) {
	$fehler['name'] = "<font color=\"#FF0000\">Bitte geben Sie einen Namen ein.<br /></font>"; 
}


if(!preg_match("/^[0-9a-zA-ZÄÜÖ_.-]+@[0-9a-z.-]+\.[a-z]{2,6}$/", $email)) {
    $fehler['email'] = "<font color=\"#FF0000\">Bitte geben Sie eine Email-Adresse ein.<br /></font>"; 
}


if(empty($betreff)) {
	$fehler['betreff'] = "<font color=\"#FF0000\">Bitte geben Sie einen Betreff ein.<br /></font>"; 
}


if(empty($text)) {
	$fehler['text'] = "<font color=\"#FF0000\">Bitte geben Sie einen Text ein.<br /></font>"; 
}


if($_SESSION[$sessionName] != trim($_POST['sicherheitscode'])) {
    unset($_SESSION['sicherheitscode']);
    $fehler['captcha'] = "<font color=\"#FF0000\">Bitte geben Sie den richtigen Code ein.<br /></font>"; 
}



if(empty($fehler)) {
    $betreff = "".$betreff."";
    $mail_header = "From: \"".$name."\" <".$email.">\n";
    $mail_header .= "Reply-To: <".$email.">\n";
	$mail_header .= "X-Mailer: PHP/ ".phpversion()." \n";
	
	
    $msg  = "Folgende Nachricht wurde per Kontaktformular am ".$datum." Uhr gesendet:\n" .
	"-------------------------------------------------------------------------\n\n";
    $msg .= "Name: ".$name."\n";
    $msg .= "E-Mail: ".$email."\n";
    $msg .= "\nBetreff: ".$betreff."\n";
    $msg .= "Text:\n ".$_POST['text'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['text'])."\n";
    "-------------------------------------------------------------------------\n\n";
    $msg .= "\n\nIP Adresse: ".$ip."\n";
    
	$msg = strip_tags($msg);



//Automatische "Danke" E-Mail erstellen
    $danke_subject = "Ihre Anfrage bei WILD Motorsport";
    $danke_header = "MIME-Version: 1.0\n";
	$danke_header .= "Content-Type: text/plain; charset=\"ISO-8859-1\"";
	$danke_header .= "Content-Transfer-Encording: quoted-printable";
	$danke_header = "From: <".$empfaenger.">\n";
    $danke_header .= "Reply-To: <".$empfaenger.">\n";
	$danke_msg  = "Vielen Dank für Ihre Anfrage bei WILD Motorsport. Wir werden uns bemühen schnellstmöglich darauf zu antworten.\n\n";
    $danke_msg .= "Zusammenfassung:\n" .
    "-------------------------------------------------------------------------\n\n";
    $danke_msg .= "Name: ".$name."\n";
    $danke_msg .= "E-Mail:  ".$email."\n";
    $danke_msg .= "\nBetreff: ".$betreff."\n";
    $danke_msg .= "Text:\n ".$_POST['text'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['text'])."\n";
    $danke_msg .= "\n\nIP Adresse: ".$ip."\n";
    
	$danke_msg = strip_tags($danke_msg);



if(mail($empfaenger, $betreff, $msg, $mail_header)) {
	mail($email, $danke_subject, $danke_msg, $danke_header);



	echo "<META HTTP-EQUIV=\"refresh\" content=\"0; URL=index.php?id=success\">";
	exit();
}
}
}

?>

<h1>Kontakt</h1>
<br /><br />
Sie haben Fragen oder Anregungen zu unseren Produkten? Dann nutzen Sie unser Kontaktformular oder rufen Sie uns gerne unter folgender Rufnummer an.
<br /><br /><br />
<h1>Kontaktformular</h1>
<br /><br />
<div class="kontaktformular">
<form action="<?php $_SERVER['PHP_SELF'];?>" method="post" name="kontakt">
<fieldset class="eingabefelder">
<table>
  <tr>
    <td class="label"><label>Name:</label></td>
    <td class="field"> <?php if ($fehler['name'] != "") { echo $fehler['name']; } ?><input name="name" type="text" size="20" value="<?php echo $_POST['name']; ?>" /></td>
  </tr>
  <tr>
    <td class="label"><label>Email:</label></td>
    <td class="field"> <?php if ($fehler['email'] != "") { echo $fehler['email']; } ?><input name="email" type="text" size="20" value="<?php echo $_POST['email']; ?>" /></td>
  </tr>
</table>
<br />
<table>
  <tr>
    <td class="label"><label>Betreff:</label></td>
    <td class="field"> <?php if ($fehler['betreff'] != "") { echo $fehler['betreff']; } ?><input name="betreff" type="text" size="20" value="<?php echo $_POST['betreff']; ?>" /></td>
  </tr>
  <tr>
    <td class="label"><label>Text:</label></td>
    <td class="field"> <?php if ($fehler['text'] != "") { echo $fehler['text']; } ?><textarea name="text" type="text" cols="30" rows="8"><?php echo $_POST['text']; ?></textarea></td>
  </tr>
</table>
</fieldset>

<fieldset class="captcha">
<table>
  <tr>
    <td class="label"><label>Sicherheitscode:</label></td>
    <td class="field"><img src="kontakt.php?captcha" title="Sicherheitscode" alt="" /></td>
  </tr>
  <tr>
    <td class="label"><label>Code eingeben:</label></td>
    <td class="field"> <?php if ($fehler['captcha'] != "") { echo $fehler['captcha']; } ?><input maxlength="5" name="sicherheitscode" type="text" size="20" value="" /></td>
  </tr>
</table>
</fieldset>

<fieldset class="senden">
<input type="submit" name="send" value="Senden" />
<input type="submit" name="delete" value="L&ouml;schen" />
<br /><br />Bitte f&uuml;llen Sie alle Felder aus um das Formular zu senden.
</fieldset>
</form>
</div>

Vielen Dank schonmal im Voraus.

Gruß Andy
 
Zuletzt bearbeitet:
Keiner mit einer Verbesserung oder Lösungsvorschlägen?

Das Session-Problem habe ich bereits behoben Habe jetzt ganz am Anfang der kontakt.php ein session_start(); eingefügt und jetzt stimmt alles******

Nur was ist mit den Variablen? Ist das nicht schlimm? Denn das Formular läuft ohne Probleme.

Gruß Andy
 
Moin Andy,

der Fehler besagt das, was er besagt.....du greifst dort mehrmals auf eine Variable $ fehler zu, die nirgends existiert.
Ob soetwas kritisch ist, kann man nicht generell beantworten, das hängt vom Kontext ab....gut ist es aber auf jeden Fall nicht.

Die Lösung ist recht umproblematisch in diesem Fall:
Füge irgendwo am Anfang des Skriptes Folgendes ein:
PHP:
$fehler=array();

Übrigens: Es ist Sonntagmorgen, sei da nicht so ungeduldig...da will man ausschlafen, entalkoholisieren und frühstücken.... Halb 8 ist da nicht gerade eine günstige Zeit für schnelles Feedback :D
 
Hallo Sven,

danke für die Antwort - Leider funktioniert es nicht mit der Befehl

PHP:
$fehler = array();

Also wenn ich es ganz oben im Code einfüge ändert sich die Fehlermeldung auf folgende:

Notice: Undefined index: name in C:\xampp\htdocs\homepage_neu\kontakt.php on line 201

Also die selbe Fehlermeldung habe ich auch in folgendem Bereich:

HTML:
<input name="name" type="text" size="20" value="<?php echo $_POST['name']; ?>" />

Was hälst du ansonsten von meinem Script? Irgendwelche Verbesserungen?

Gruß Andy
 
Der Array $_POST hat kein Werk mit dem Schlüssel 'name'
mit var_dump($_POST) kannst du herausfinden was für Einträge das Array hat
 
Kommt folgende Fehlermeldung:

array(6) { ["name"]=> string(123) "
Notice: Undefined variable: _POST in C:\xampp\htdocs\homepage_neu\kontakt.php on line 202
" ["email"]=> string(123) "
Notice: Undefined variable: _POST in C:\xampp\htdocs\homepage_neu\kontakt.php on line 206
" ["betreff"]=> string(123) "
Notice: Undefined variable: _POST in C:\xampp\htdocs\homepage_neu\kontakt.php on line 213
" ["text"]=> string(127) "
Notice: Undefined variable: _POST in C:\xampp\htdocs\homepage_neu\kontakt.php on line 217
" ["sicherheitscode"]=> string(0) "" ["delete"]=> string(8) "Löschen" }
 
Hi,
wie oben schon erläutert, sollte man nur auf Variablen zugreifen, die bereits definiert wurden.
Ist dies nicht der Fall, kommt die Notice.

Prüf hat vor der Ausgabe, ob die Variable existiert, z.B.:
if (isset($_POST['name'])) echo $_POST['name']
else echo 'Name fehlt';
 
Also habe jetzt mal einiges geändert. Habe die Fehlermeledung aus dem <input>-Tag jetzt weg. Habe jetzt aber immernoch eine Fehlermeldung bevor das Formular abgesendet wird und zwar:

Notice: Undefined index: name in C:\xampp\htdocs\homepage_neu\kontakt.php on line 201

Also es liegt ganz klar hier dran:

PHP:
<?php echo $fehler['name']; ?>

aber warum? Habe das Array ['name'] doch in diesem Code bestimmt:

PHP:
if(empty($name)) {
	$fehler['name'] = "<font color=\"#FF0000\">Bitte geben Sie einen Namen ein.<br /></font>"; 
}

Ich weiß leider langsam nicht mer weiter - oder kann man diesen Fehler evtl. stehen lassen?
 
Zurück