Wie Fehler ausheben?

Hansi321

Mitglied
Hab folgendes Problem, wenn ich die Datei include bekomme ich in den Zeilen 35,36,41,42,45,48,49,51,53,55,60 eine Fehlermeldung Notice: Undefined variable:,
Leider weiss ich nicht wie ich den Fehler los werde da ich noch nicht sehr viel Erfahrung mit php hab und erst gerade damit begonnen hab.
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
<title>Kontaktformular</title> 

<style type="text/css">
input.submit {

width: 150px;

}
input.reset {

width: 150px;

}
</style>

</head> 
<body> 


<?php 

// *** Deine Mailadresse (Empfänger) *** 
$mail_to="...@....de"; 
// ************************************* 

if (isset($_POST['fromname'])) $from_name=$_POST['fromname']; 
if (isset($_POST['frommail'])) $from_mail=strtolower($_POST['frommail']); 
if (isset($_POST['mailsubject'])) $mail_subject=$_POST['mailsubject']; 
if (isset($_POST['mailtext'])) $mail_text=$_POST['mailtext']; 
if (isset($_POST['s'])) $send=$_POST['s']; 

if(trim($from_name)=="") $err_text.="Bitte gib Deinen Namen an.<br>"; 
if(trim($from_mail)=="") 
  $err_text.="Bitte gib Deine E-Mail-Adresse an.<br>"; 
else 
  if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$",$from_mail)) 
    $err_text.="Bitte gib eine gültige E-Mail-Adresse an.<br>"; 
if(trim($mail_subject)=="") $err_text.="Bitte gib einen Betreff ein.<br>"; 
if(trim($mail_text)=="") $err_text.="Bitte gib einen Nachrichtentext ein.<br>"; 

// *** Zu langen Text abschneiden *** 
if(strlen($mail_text)>1000) { 
  $mail_text=substr($mail_text,0,1000)."... (Text wurde gekürzt!)"; 
} 
$from_name=str_replace(chr(34),"''",$from_name); 
$mail_subject=str_replace(chr(34),"''",$mail_subject); 
$from_name=stripslashes($from_name); 
$from_mail=stripslashes($from_mail); 
$mail_subject=stripslashes($mail_subject); 
$mail_text=stripslashes($mail_text); 

if(($send=="1") && (isset($err_text))) { 
  echo "<p><big><b>Fehler:</b></big><br>"; 
  echo "$err_text</p>"; 
} 

if(($send!="1") || (isset($err_text))) 
{ 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<table border=0 cellspacing=2 cellpadding=0 width=100%> 
<tr><td nowrap align=right>Dein Name:</td><td>&nbsp;</td> 
<td width=100%><input type="text" name="fromname" size=50 maxlength=120 value="<?php echo $from_name; ?>"></td></tr> 
<tr><td nowrap align=right>Deine E-Mail Adresse:</td><td></td> 
<td width=100%><input type="text" name="frommail" size=50 maxlength=120 value="<?php echo $from_mail; ?>"></td></tr> 
<tr><td nowrap align=right>Betreff:</td><td></td> 
<td width=100%><input type="text" name="mailsubject" size=50 maxlength=120 value="<?php echo $mail_subject; ?>"></td></tr> 
<tr><td nowrap align=right valign=top>Text:<br><i>(max. 1.000 Zeichen)</i></td><td></td> 
<td width=100%><textarea cols="40" rows="10" name="mailtext"><?php echo $mail_text; ?></textarea></td></tr> 
<tr><td></td><td></td><td> 
<input type="hidden" value="1" name="s"> 
<input type="submit" value="Nachricht versenden" name="submit" class="submit">&nbsp; 
<input type="reset" value="Reset" name="reset" class="reset"></td></tr> 
</table> 
</form> 

<?php 
} else { 
  $header="From: $from_name <$from_mail>\n"; 
  $header.="Reply-To: $from_mail\n"; 
  $header.="X-Mailer: PHP-FormMailer (www.gaijin.at)\n"; 
  $header.="Content-Type: text/plain"; 
  $mail_date=gmdate("D, d M Y H:i:s")." +0000"; 
  $send=0; 
  if(@mail($mail_to,$mail_subject,$mail_text,$header)) 
  { 
    echo "<p><b>Deine E-Mail wurde abgesendet.</b></p>"; 
    echo "<p><a href=\"".$_SERVER['PHP_SELF']."?from_name=$from_name&from_mail=$from_mail\"></a></p>"; 
  }else{ 
    echo "<p><b>Beim Versenden der E-Mail ist ein Fehler aufgetreten!</b></p>"; 
    echo "<p><a href=\"".$_SERVER['PHP_SELF']."?from_name=$from_name&from_mail=$from_mail&mail_subject=$mail_subject&mail_text="; 
    echo urlencode($mail_text)."\">Zurück zum Formular</a></p>"; 
  } 
} 
?> 
</body> 
</html>
 
Zuletzt bearbeitet:
Schau dir mal beispielsweise das an:
PHP:
$err_text.="Bitte gib Deinen Namen an.<br>";
Du hast die Variable $err_text vorher noch nirgends gebraucht, sagst aber, dass du ihr etwas hinzufügen willst.

Und PHP denkt sich jetzt: Zu was soll ich denn den String hinzufügen? Die Variable gibts doch noch garnicht!

Würdest du vorher schreiben:
PHP:
$err_text = "";
würde PHP keine Meldung bringen.
 
Hallo, das ist aber glaub ich nicht der Fehler, es kommt nämlich z.b. auf Zeile 35 bezogen folgende Fehlermeldung:
Code:
Notice: Undefined variable: from_name in /usr/export/www/vhosts/funnetwork/hosting/test123/1/inc/kontakt.php on line 35
 
Hallo, das ist aber glaub ich nicht der Fehler, es kommt nämlich z.b. auf Zeile 35 bezogen folgende Fehlermeldung:
Code:
Notice: Undefined variable: from_name in /usr/export/www/vhosts/funnetwork/hosting/test123/1/inc/kontakt.php on line 35

Also Online t es ohne Probleme!

Wo genau kommt der Fehler?

Wenn du es auf deinem Rechner testet kann es dieses Problem sein!

Hier kannst du es einsehen und test: http://lenox1025.le.funpic.de/test/index.php
 
Online test ging ohne Probleme wenn ich direkt zu der Kontakt.php gegangen bin.
Gehe ich jedoch über die Index.php wo ich die Kontakt.php include hab zu ihr und klick auf den Button Kontakt, bekomme ich die fehler.
 
Dann wäre es doch vom Vorteil wenn du den Code anhängst in dem du es includet hast?

Den nur so können wir sehen wo sich der Fehler versteckt ;)
 
ok hier Datei in der ich die Kontakt include hab:

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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php
    // die Datei inhalt.php
    
    if(isset($_GET['section'])) {
        switch($_GET['section']) {
            case "aktive":
                include "aktive.php";
                break;
			
			case "teilnehmer":
                include "teilnehmer.php";
                break;
				
			case "bilder":
                include "fotogalerie/index.php";
                break;
								
			case "kontakt":
                include "kontakt.php";
                break;
								
            default:  // Wenn eine ungültige Section angegeben wurde
                    // sollen die News gezeigt werden
                include "news.php";
                break;
        }     
    } else {
        // wenn section nicht angegeben wurde
        // sollen die News angezeigt werden.
        include "news.php";
    }
?>
</body>
</html>
 
Hi,
das problem ist das du die Variable zum erst mal in einer IF Anweisung verwendest. Dadurch
ist die Variable für das weitere Programm unsichtbar.

Zeile 35 bei Dir:
if(trim($from_name)=="") $err_text.="Bitte gib Deinen Namen an.<br>";

Wenn du diese Fehlermeldung vermeiden willst, must du folgende Prüfung noch mit einbauen:
PHP:
if(!isset($err_text)){
$err_text.="Bitte gib Deinen Namen an.<br>"; 
}

D.h. Es wird vorher geprüft ob die Variable vorhanden ist.

gruss
 
hi,
als du must diese Prüfung immer ein bauen wenn du eine Variable nicht voher deklarierst und/oder auf diese in IF Bedingungen dann zugreifen willst.
PHP:
if(!isset($err_text)){ 
if(trim($from_name)=="") $err_text.="Bitte gib Deinen Namen an.<br>"; 
}

Eine ander Möglichkeit ist vor deinen IF Prüfungen die Variable PHP bekannt zu geben. z.B. in Zeile 33
so sparst du dir die Isset Prüfung.

PHP:
//Variable deklarieren vor IF Prüfungen
$err_text = "";
if(trim($from_name)=="") $err_text.="Bitte gib Deinen Namen an.<br>";

gruss
 
Zurück