DiamondDog: Fehler auf index.php ausgeben, nur wie?

Hallo Leute,
ich hab da folgendes und zwar habe ich 2 php Dateien ein mal die index.php und senden.php. In der index.php kann ich name usw eingeben und das wird dann mit der senden.php abgeschickt, mein Problem dabei ist das die Antwort ob die Nachricht gesendet wurde oder ein Fehler aufgetreten ist immer auf der senden.php Seite ausgegeen wird. Meine Frage dazu ist jetzt, wie bekomme ich das hin das die Fehler und Gesendet Nachricht auf der index.php ausgegen werden?
Hier mal mein Code:
Index.php

  
<head>  
<title>Kontakt</title>  
<link rel="stylesheet" href="../style/style.css" type="text/css">  
</head>  
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="yes">  
<div align="center">Kontakt</div><br>  
<div align="left">  
<form name="form1" method="post" action="kontakt/senden.php">  
<table width="100%" border="0" cellpadding="0" cellspacing="2">  
<tr>  
  <td width="10%"><b>Name:</b></td>  
  <td width="89%"><input name="name" type="text" id="name" style="width:200px;" /></td>  
</tr>  
<tr>  
<td><b>E-Mail:</b></td>  
<td><input name="email" type="text" id="email" style="width:200px;" /></td>  
</tr>  
<tr>  
  <td><b>ICQ Nummer:</b></td>  
  <td><input name="icq" type="text" id="icq" style="width:200px;" /></td>  
</tr>  
<tr>  
  <td><b>Homepage:</b></td>  
  <td><input name="homepage" type="text" id="homepage" style="width:200px;" /></td>  
</tr>  
<tr>  
<td><b>Betreff:</b></td>  
<td>  
<select name="betreff" id="betreff" style="width:200px;">  
  <option value="Fehler">Fehler</option>  
  <option value="Download">Download</option>  
  <option value="sonstiges">sonstiges</option>  
</select>  
</td>  
</tr>  
<tr>  
<td valign="top">  
<b>Nachricht:</b><br>  
<img src="../style/bilder/Abstandhalter.gif" width="100" height="10" /></td>  
<td><textarea name="text" cols="50" rows="7" id="name4"></textarea></td>  
</tr>  
<tr>  
<td>&nbsp;</td>  
<td><input type="submit" name="Submit" value="Absenden" />  
    <input name="reset" type="reset" id="reset" value="L&ouml;schen" /></td>  
</tr>  
</table>  
</form>  
</div>  
</body>  

senden.php

  
<?php  
// Wir legen eine Variable mit deiner E-Mail  
$ihremail = "DiamondDog84@gmx.de";  
// Lege nun eine leere Variable für Fehler an (wird später benötigt)  
$error = "";  
// IP-Adresse übertragen  
$ip = $_SERVER["REMOTE_ADDR"];  
// Host übertragen  
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);  
// Datum und Uhrzeit übertragen  
$timestamp = time();  
$datum = date("d.m.Y",$timestamp);  
$uhrzeit = date("H:i",$timestamp);  
// Inhalt aus den Formularen übertragen "Name"  
$name = $_POST['name'];  
// Inhalt aus den Formularen übertragen "Email"  
$email = $_POST['email'];  
// Inhalt aus den Formularen übertragen "Betreff"  
$betreff = $_POST['betreff'];  
// Inhalt aus den Formularen übertragen "ICQ Nummer"  
$icq = $_POST['icq'];  
// Inhalt aus den Formularen übertragen "Homepage"  
$homepage = $_POST['homepage'];  
// Inhalt aus den Formularen übertragen "Nachricht"  
$text = $_POST['text']; // Text  
$Submit = $_POST['Submit']; // Sende Button  
// Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist  
// das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch  
// 2 bustaben vor "@" und nach dem "@" da sind.  
function mailcheck($mail) {  
  $mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])  
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab  
  return $mail; // wir geben die E-Mail zurück  
}  
    // Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)  
    //wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt  
    // Also die Ausgabe "Sie haben keinen Namen angegeben."  
    if(empty($name)) $error .= "<li>Sie haben keinen Namen angegeben.</li>";  
    // das gleiche mit "Email"  
    if(empty($email)) $error .= "<li>Sie haben keine E-Mail angegeben.</li>";  
    // hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe  
    if(mailcheck($email)) $error .= "<li>Ihre E-Mail ist ungültig</li>";  
    // für das Feld "Betreff"  
    if(empty($betreff)) $error .= "<li>Es wurde kein Betreff ausgewählt.</li>";  
    // für Nachricht  
    if(empty($text)) $error .= "<li>Sie haben kein Text angegeben.</li>";  
    // if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde  
    // Dann springt das runter und wir holen uns die übertragene Daten  
        if(empty($error) && $Submit == "Absenden" ) {  
    // wir machen das ganze in eine Variable "$nachricht"  
    $nachricht = "<b>".$uhrzeit."".  
	   			 "Uhr - ".$datum."</b><br><br>\n".  
	             "<b>Ip:</b> ".$ip."<br>\n".  
				 "<b>Host:</b> ".$host."<br>\n".  
				 "<b>Name:</b> ".$name."<br>\n".  
                 "<b>Email:</b> ".$email."<br>\n".  
				 "<b>ICQ Nummer:</b> ".$icq."<br>\n".  
				 "<b>Homepage:</b> ".$homepage."<br><br>\n".  
                 "<b>Betreff:</b> ".$betreff."<br>\n".  
                 "<b>Nachricht:</b><br> \n".$text;  
  
	$subject = "Homepage Kontakt - $betreff";  
  
	$header    = "From: $email\n";  
	$header   .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";  
	  
    // hier setzen wir unsere mail() funktion ein das muss genau so ausehen  
    // mail($anwem,$subject,$den den ganzen inhalt, unbedingt "From:" also von wem)  
    mail($ihremail,$subject,$nachricht,$header);  
    }  
    // hier fragen wir wieder ein Error ein:  
if(empty($error)) {  
    // wir geben dann hier ein dass alles ok ist  
    echo "<b>Die Nachricht wurde erfolgreich verschickt!</b><br>  
                  <ul>  
                  <li>Name: $name</li>  
                  <li>Email: $email</li>  
				  <li>ICQ Nummer: $icq</li>  
				  <li>Homepage: $homepage</li>  
                  <li>Betreff: $betreff</li>  
                  <li>Nachricht: $text</li>  
                  </ul>";  
    // Wenn es nicht stimmt  
    } else {  
    echo "Folgender Fehler ist aufgetreten<br><p>Ihre Nachricht konnte nicht gesendet werden:<ul>$error</ul></p>";  
}  
?>  

PS: Wenn das möglich ist, wäre es auch super alles in einer php zu haben.

Danke schon mal an alle fürs Helfen.

Mfg Dog

  1. PS: Wenn das möglich ist, wäre es auch super alles in einer php zu haben.

    Affenformular

    1. »» PS: Wenn das möglich ist, wäre es auch super alles in einer php zu haben.
      Affenformular

      Ok das hab ich soweit verstanden, jetzt hab ich nur noch das Problem das sobald ich die Seite betrette die Fehler angezeigt werden. wie mach ich das das sie erst nach dem ersten klick auf senden angezeigt werden?

        
      <?php  
      // Wir legen eine Variable mit deiner E-Mail  
      $ihremail = "DiamondDog84@gmx.de";  
      // Lege nun eine leere Variable für Fehler an (wird später benötigt)  
      $error = "";  
      // IP-Adresse übertragen  
      $ip = $_SERVER["REMOTE_ADDR"];  
      // Host übertragen  
      $host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);  
      // Datum und Uhrzeit übertragen  
      $timestamp = time();  
      $datum = date("d.m.Y",$timestamp);  
      $uhrzeit = date("H:i",$timestamp);  
      // Inhalt aus den Formularen übertragen "Name"  
      $name = $_POST['name'];  
      // Inhalt aus den Formularen übertragen "Email"  
      $email = $_POST['email'];  
      // Inhalt aus den Formularen übertragen "Betreff"  
      $betreff = $_POST['betreff'];  
      // Inhalt aus den Formularen übertragen "ICQ Nummer"  
      $icq = $_POST['icq'];  
      // Inhalt aus den Formularen übertragen "Homepage"  
      $homepage = $_POST['homepage'];  
      // Inhalt aus den Formularen übertragen "Nachricht"  
      $text = $_POST['text']; // Text  
      $Submit = $_POST['Submit']; // Sende Button  
      // Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist  
      // das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch  
      // 2 bustaben vor "@" und nach dem "@" da sind.  
      function mailcheck($mail) {  
        $mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])  
      +@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab  
        return $mail; // wir geben die E-Mail zurück  
      }  
          // Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)  
          //wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt  
          // Also die Ausgabe "Sie haben keinen Namen angegeben."  
          if(empty($name)) $error .= "<li>Sie haben keinen Namen angegeben.</li>";  
          // das gleiche mit "Email"  
          if(empty($email)) $error .= "<li>Sie haben keine E-Mail angegeben.</li>";  
          // hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe  
          if(mailcheck($email)) $error .= "<li>Ihre E-Mail ist ungültig</li>";  
          // für das Feld "Betreff"  
          if(empty($betreff)) $error .= "<li>Es wurde kein Betreff ausgewählt.</li>";  
          // für Nachricht  
          if(empty($text)) $error .= "<li>Sie haben kein Text angegeben.</li>";  
          // if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde  
          // Dann springt das runter und wir holen uns die übertragene Daten  
              if(empty($error) && $Submit == "Absenden" ) {  
          // wir machen das ganze in eine Variable "$nachricht"  
          $nachricht = "<b>".$uhrzeit."".  
      	   			 "Uhr - ".$datum."</b><br><br>\n".  
      	             "<b>Ip:</b> ".$ip."<br>\n".  
      				 "<b>Host:</b> ".$host."<br>\n".  
      				 "<b>Name:</b> ".$name."<br>\n".  
                       "<b>Email:</b> ".$email."<br>\n".  
      				 "<b>ICQ Nummer:</b> ".$icq."<br>\n".  
      				 "<b>Homepage:</b> ".$homepage."<br><br>\n".  
                       "<b>Betreff:</b> ".$betreff."<br>\n".  
                       "<b>Nachricht:</b><br> \n".$text;  
        
      	$subject = "Homepage Kontakt - $betreff";  
        
      	$header    = "From: $email\n";  
      	$header   .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";  
      	  
          // hier setzen wir unsere mail() funktion ein das muss genau so ausehen  
          // mail($anwem,$subject,$den den ganzen inhalt, unbedingt "From:" also von wem)  
          mail($ihremail,$subject,$nachricht,$header);  
          }  
          // hier fragen wir wieder ein Error ein:  
      if(empty($error)) {  
          // wir geben dann hier ein dass alles ok ist  
          echo "<b>Die Nachricht wurde erfolgreich verschickt!</b><br>  
                        <ul>  
                        <li>Name: $name</li>  
                        <li>Email: $email</li>  
      				  <li>ICQ Nummer: $icq</li>  
      				  <li>Homepage: $homepage</li>  
                        <li>Betreff: $betreff</li>  
                        <li>Nachricht: $text</li>  
                        </ul>";  
          // Wenn es nicht stimmt  
          } else {  
          echo "Folgender Fehler ist aufgetreten<br><p>Ihre Nachricht konnte nicht gesendet werden:<ul>$error</ul></p>";  
      }  
      ?>  
      <head>  
      <title>Kontakt</title>  
      <link rel="stylesheet" href="../style/style.css" type="text/css">  
      </head>  
      <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="yes">  
      <div align="center">Kontakt</div><br>  
      <div align="left">  
      <form action="<?php echo 'index.php?site=kontakt/index'; ?>" method="post">  
      <table width="100%" border="0" cellpadding="0" cellspacing="2">  
      <tr>  
        <td width="10%"><b>Name:</b></td>  
        <td width="89%"><input name="name" type="text" id="name" style="width:200px;" /></td>  
      </tr>  
      <tr>  
      <td><b>E-Mail:</b></td>  
      <td><input name="email" type="text" id="email" style="width:200px;" /></td>  
      </tr>  
      <tr>  
        <td><b>ICQ Nummer:</b></td>  
        <td><input name="icq" type="text" id="icq" style="width:200px;" /></td>  
      </tr>  
      <tr>  
        <td><b>Homepage:</b></td>  
        <td><input name="homepage" type="text" id="homepage" style="width:200px;" /></td>  
      </tr>  
      <tr>  
      <td><b>Betreff:</b></td>  
      <td>  
      <select name="betreff" id="betreff" style="width:200px;">  
        <option> </option>  
        <option value="Fehler">Fehler</option>  
        <option value="Download">Download</option>  
        <option value="sonstiges">sonstiges</option>  
      </select>  
      </td>  
      </tr>  
      <tr>  
      <td valign="top">  
      <b>Nachricht:</b><br>  
      <img src="../style/bilder/Abstandhalter.gif" width="100" height="10" /></td>  
      <td><textarea name="text" cols="50" rows="7" id="name4"></textarea></td>  
      </tr>  
      <tr>  
      <td>&nbsp;</td>  
      <td><input type="submit" name="Submit" value="Absenden" />  
          <input name="reset" type="reset" id="reset" value="L&ouml;schen" /></td>  
      </tr>  
      </table>  
      </form>  
      </div>  
      </body>  
      
      
      1. Hi,

        Affenformular

        Ok das hab ich soweit verstanden, jetzt hab ich nur noch das Problem das sobald ich die Seite betrette die Fehler angezeigt werden. wie mach ich das das sie erst nach dem ersten klick auf senden angezeigt werden?

        In dem du deine Fehlerprüfung nur dann durchführen lässt, wenn das Script auch durch Absenden des Formulars aufgerufen wurde.

        Man könnte generell testen, ob die Aufrufmethode POST war; oder auf ein hidden field im Formular, ...

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. In dem du deine Fehlerprüfung nur dann durchführen lässt, wenn das Script auch durch Absenden des Formulars aufgerufen wurde.

          Man könnte generell testen, ob die Aufrufmethode POST war; oder auf ein hidden field im Formular, ...

          Ok hab ich verstanden und so gelöst:

            
            
          if(isset($_POST["Submit"]))  
          {  
          //Code  
          };  
            
          
          
  2. Hello,

    ich hab da folgendes und zwar habe ich 2 php Dateien ein mal die index.php und senden.php. In der index.php kann ich name usw eingeben und das wird dann mit der senden.php abgeschickt, mein Problem dabei ist das die Antwort ob die Nachricht gesendet wurde oder ein Fehler aufgetreten ist immer auf der senden.php Seite ausgegeen wird. Meine Frage dazu ist jetzt, wie bekomme ich das hin das die Fehler und Gesendet Nachricht auf der index.php ausgegen werden?

    Das hängt von Deinem Konzept ab, das Du für die Entwicklung gewählt hast:

    • Explizites Kopzept (hast Du scheinbar bisher)
        Alle Aufgaben werden durch getrennte Scripte erledigt
        Jedes Script weiß, von welchem es "aufgerufen" werden darf (musst Du ihm beibringen
        und einen Weg finden, diee Information auch dem Script zuzuleiten) und zu welchem es
        dann anschließend weiterleiten muss.
        Weiterleitung wäre also hier das Stichwort.

    • Implizites Konzept
        Alle Aufgaben werden von einem Kernscript entgegen genommen, das diese
        dann bewertet und der Aufgabe entsprechende Module dazu lädt.
        Das kann für den Client unsichtbar im Backend in einer Session kontrolliert
        werden, oder aber der Client erhält in begrenztem Maße Einfluss auf die
        Steuerung, indem man über (sichtbare) GET-Paramter Aufgaben signiert
        ( index.php?task=senden ) oder über für den Normbenutzer unsichtbare
        POST-Parameter in Formularen ( Submit-Buttons, Hidden-Fields ) eine Wahl
        trifft.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hey also ich habs schon versucht das Ergebniss ist in einem Post weiter unten, leider hab ich jetzt noch das Problem das sofort bei betreten der Seite die Fehler angezeigt werden. Leider bin ich nicht so super in PHP, hab jetzt schon ne Zeit lang gelesen und probiert, aber leider krieg ich das ganz alleine nicht hin undb brächt einwenig Untestüzung.

      Danke schon mal.