eniem: echo wird nicht "ausgeführt"

Hallo!

Ich habe gerade mal für ein kleines Projekt einen Formmailer geschrieben, den ich nun testen wollte. - Ja, wollte, denn komischerweise wird mir das "echo" welches das Formular ausgibt nicht "ausgeführt", und ich komm einfach nicht drauf, warum... Hier einstweilen der code:

  
<?php  
  
if(isset($_POST['name']) || isset($_POST['email']) || isset($_POST['text']))  
{  
  $from = "Formmailer @ meine-webseite.at";  
  $to = "mail@example.com";  
  $subject = "Formmailer - Feedback";  
  $text = "Nachricht von ".$_POST['name']." &lt;".$_POST['email']."&gt;\r\n".$_POST['text']."\r\nIP: ".$_SERVER['REMOTE_ADDR'];  
  
  mail($to, $subject, $text, "From: ".$from);  
  
  header("Location: http://www.meine-webseite.at/");  
}  
else  
{  
   echo '  
    <form method="post" action="testdocument.php">  
 <table>  
  <tr>  
   <td><label for="name">Name</label></td><td><input type="text" name="name" id="name" size="50" value="'.(isset($_POST['name'])) ? $_POST['name'] : ''.'" /></td>  
  </tr>  
  <tr>  
   <td><label for="email">eMail</label></td><td><input type="text" name="email" id="email" size="50" value="'.(isset($_POST['email'])) ? $_POST['email'] : ''.'" /></td>  
  </tr>  
  <tr>  
   <td><label for="text">Nachricht</label></td><td><textarea cols="30" rows="20" name="text" id="text">"'.(isset($_POST['text'])) ? $_POST['text'] : ''.'"</textarea></td>  
  </tr>  
  <tr colspan="2">  
   <input type="reset" value="Zurücksetzen" />&nbsp;<input type="submit" name="submit" value="Abschicken" />  
  </tr>  
 </table>  
 </form>  
  ';  
  
  if(!isset($_POST['name']))  
    echo 'Bitte geben Sie einen Namen ein!<br />';  
  if(!isset($_POST['text']))  
    echo 'Bitte geben Sie einen Nachrichtentext ein!<br />';  
  if(!isset($_POST['email']) || !preg_match('/^[^\s]+@([^\s]+\.)+[^\s]{2,6}$/', $_POST['email']))  
    echo 'Bitte geben Sie eine gültige eMail-Adresse ein!<br />';  
}  
  
?>  

Würde mich über eine Antwort freuen!

Gruss,
  eniem

  1. Hallo Eniem.
    Bei dir vermischten sich die Hochkommata mit den Anführungszeichen.
    Korrigert sieht es aus wie folgt:

    <?php

    if(isset($_POST['name']) || isset($_POST['email']) || isset($_POST['text']))
    {
      $from = "Formmailer @ meine-webseite.at";
      $to = "mail@example.com";
      $subject = "Formmailer - Feedback";
      $text = "Nachricht von ".$_POST['name']." &lt;".$_POST['email']."&gt;\r\n".$_POST['text']."\r\nIP: ".$_SERVER['REMOTE_ADDR'];
     mail($to, $subject, $text, "From: ".$from);
     header("Location: http://www.meine-webseite.at/");
    }
    else
    {
     $name  = isset($_POST['name'])  ? $_POST['name']   : '';
     $email = isset($_POST['email'])  ? $_POST['email']  : '';
     $text  = isset($_POST['text'])  ? $_POST['text']   : '';

    if($name=="")
        echo 'Bitte geben Sie einen Namen ein!<br />';
      if($text=="")
        echo 'Bitte geben Sie einen Nachrichtentext ein!<br />';
      if($email=="" || !preg_match('/[1]+@([^\s]+.)+[^\s]{2,6}$/', $email))
        echo 'Bitte geben Sie eine gültige eMail-Adresse ein!<br />';

    echo '
       <form method="post" action="form.php">
     <table>
      <tr>
       <td><label for="name">Name</label></td>
       <td><input type="text" name="name" id="name" size="50" value="'.$name.'"></td>
      </tr>
      <tr>
       <td><label for="email">eMail</label></td>
          <td><input type="text" name="name" id="name" size="50" value="'.$email.'"></td>
      </tr>
      <tr>
       <td><label for="text">Nachricht</label></td>
       <td><textarea cols="30" rows="20" name="text" id="text">'.$text.'</textarea></td>
      </tr>
      <tr>
       <td  colspan="2">
        <input type="reset" value="Zurücksetzen" />&nbsp;
        <input type="submit" name="submit" value="Abschicken" />
       </td>
      </tr>
     </table>
     </form>
      ';

    }

    ?>

    mfg
    Dieter


    1. ^\s ↩︎

  2. Hi,

    Dein Fehler liegt bei den Valueausgaben der Einagbefelder

    <input type="text" name="email" id="email" size="50" value="'.(isset($_POST['email'])) ? $_POST['email'] : ''.'" />

    muss heißen

    <input type="text" name="email" id="email" size="50" value="'.$_POST['email'].'">

    denn wenn POST nicht gefüllt ist, wird auch nichts angezeigt. Deshalb brauchst du nicht abfragen.

    Gruss
    Dev

    Hallo!

    Ich habe gerade mal für ein kleines Projekt einen Formmailer geschrieben, den ich nun testen wollte. - Ja, wollte, denn komischerweise wird mir das "echo" welches das Formular ausgibt nicht "ausgeführt", und ich komm einfach nicht drauf, warum... Hier einstweilen der code:

    <?php

    if(isset($_POST['name']) || isset($_POST['email']) || isset($_POST['text']))
    {
      $from = "Formmailer @ meine-webseite.at";
      $to = "mail@example.com";
      $subject = "Formmailer - Feedback";
      $text = "Nachricht von ".$_POST['name']." &lt;".$_POST['email']."&gt;\r\n".$_POST['text']."\r\nIP: ".$_SERVER['REMOTE_ADDR'];

    mail($to, $subject, $text, "From: ".$from);

    header("Location: http://www.meine-webseite.at/");
    }
    else
    {
       echo '
        <form method="post" action="testdocument.php">
    <table>
      <tr>
       <td><label for="name">Name</label></td><td><input type="text" name="name" id="name" size="50" value="'.(isset($_POST['name'])) ? $_POST['name'] : ''.'" /></td>
      </tr>
      <tr>
       <td><label for="email">eMail</label></td><td><input type="text" name="email" id="email" size="50" value="'.(isset($_POST['email'])) ? $_POST['email'] : ''.'" /></td>
      </tr>
      <tr>
       <td><label for="text">Nachricht</label></td><td><textarea cols="30" rows="20" name="text" id="text">"'.(isset($_POST['text'])) ? $_POST['text'] : ''.'"</textarea></td>
      </tr>
      <tr colspan="2">
       <input type="reset" value="Zurücksetzen" />&nbsp;<input type="submit" name="submit" value="Abschicken" />
      </tr>
    </table>
    </form>
      ';

    if(!isset($_POST['name']))
        echo 'Bitte geben Sie einen Namen ein!<br />';
      if(!isset($_POST['text']))
        echo 'Bitte geben Sie einen Nachrichtentext ein!<br />';
      if(!isset($_POST['email']) || !preg_match('/[1]+@([^\s]+.)+[^\s]{2,6}$/', $_POST['email']))
        echo 'Bitte geben Sie eine gültige eMail-Adresse ein!<br />';
    }

    ?>

    
    >   
    > Würde mich über eine Antwort freuen!  
    >   
    > Gruss,  
    >   eniem
    

    1. ^\s ↩︎

    1. Hi Dev,

      <input type="text" name="email" id="email" size="50" value="'.$_POST['email'].'">

      denn wenn POST nicht gefüllt ist, wird auch nichts angezeigt. Deshalb brauchst du nicht abfragen.

      Das ist falsch! Dabei greifst du dann auf eine nicht existierendes Element im Array $_POST zu, wofür dich PHP mit einer Notice Meldung versieht. Zwar werden Notice Meldungen auf den meisten Produktivserven nicht angezeigt, aber zum Entwickeln solltest du immer error_reporting(E_ALL); verwenden und dann werden dir auch die ganzen "kleinen" Fehlermeldungen angezeigt.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      .htpasswd Datei mit PHP erzeugen
      Dies hier ist ein öffentliches Forum - wer dir hier geholfen hat, hat dies vollkommen freiwillig und unter Aufopferung seiner Freizeit getan!
    2. Hallo,

      <input type="text" name="email" id="email" size="50"
      value="'.$_POST['email'].'">
      denn wenn POST nicht gefüllt ist, wird auch nichts angezeigt.

      Bloß nicht! Da schmeisst der Interpreter Warnings. Und wir wissen:
      Warning is just another Word for Error.
      Also immer schön error_reporting(E_ALL);. Alles andere ist laienhaft
      und lässt sich als Schwachsinn (im Sinne von unprofessional) titulieren.

      Freundliche Grüße
      Dieter

  3. Hallo!

    Danke mal für eure Antworten.

    Eine Frage habe ich noch, und zwar, wie muss ich die php.ini "konfigurieren" (oder sonst was ähnliches), dass unter xampp die mail()-Funktion funktioniert!?

    Gruss,
     eniem

    1. hi,
      dafür du schauen hier.. ;-)

      Dieter

      1. Hallo!

        dafür du schauen hier.. ;-)

        Ich dir danken herzlich dafür. :)

        Leider wird bei mir trotzdem noch keine Mail versendet. Meine PHP.INI Konfiguration sieht so aus:

        [mail function]
        ; For Win32 only.
        SMTP = localhost

        ; For Win32 only.
        sendmail_from = peterheinrich67@yahoo.de
        smtp_port = 25

        ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
        sendmail_path = configure

        (Betriebssystem: WindowsXP Prof.)

        Gruss,
         eniem

    2. Hi eniem,

      Eine Frage habe ich noch, und zwar, wie muss ich die php.ini "konfigurieren" (oder sonst was ähnliches), dass unter xampp die mail()-Funktion funktioniert!?

      Du musst den Mercury starten.
      Der (und FileZilla) wird nämlich nicht mit dem xampp_start.exe gestartet.

      BTW: Warum machst du deine Verben immer in Anführungszeichen? Sowohl "ausführen" als auch "konfigurieren" passen da doch gut hin!

      Gruß, Marian