Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Formular: Es werden nicht alle Felder übertragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Formular: Es werden nicht alle Felder übertragen

    Hi Leute,

    habe ein kleines Problem mit einem Formular, leider wird nur das Feld email übertragen, sonst nichts... habe wohl irgendwo bei der mail funktion einen fehler eingebau. Muss dazu sagen, habe kaum Kenntnisse in php, habe den Mailer nach einem Tutorial gebaut.

    PHP-Code:
     <?php
      
    // Wenn das Formular abgeschickt wurde, füre den Inhalt der Klammern aus aus.
        
    if(isset($_POST['ueberpruefung'])) 
      { 
      
    // allesok wird auf 1 gesetzt, bekommt also einen Wert. Später wird damit abgefragt, ob Name und Email ausgefüllt wurden.
      
    $allesok 1
      
     
    // Hier wird geprüft ob Name leer ist. Ist dies der Fall, wird allesok auf 0 gesetzt (Kein Wert mehr) und ein Fehlertext erstellt, der im Formular ausgegeben wird.
     
    if(empty($_POST['name'])){
      
    $allesok 0
      
    $error[name] = "Bitte einen Namen eingeben!";} 
      
       if(empty(
    $_POST['kommentar'])){
      
    $allesok 0
      
    $error[kommentar] = "Bitte eine Nachricht eingeben!";} 
      
     
    //Hier wird geprüft ob Email leer ist. Ist dies der Fall, wird allesok auf 0 gesetzt (Kein Wert mehr) und ein Fehlertext erstellt, der im Formular ausgegeben wird.
      
    if(empty($_POST['email'])){
      
    $allesok 0
      
    $error[email] = "Bitte eine Email eingeben!";} 
       
      
    // Hier wird die IF-Bedingung von ganz oben geschlossen.
      
    }
      
     
    // Hier wird geprüft ob allesok einen Wert hat. (1) Ist dies der Fall, können die Variablen $_POST['name'] und $_POST['email'] weiter verarbeitet werden.
      
    if($allesok){ 
      
      
    // Überprüfte Eingaben aus dem Formular ausgeben. An dieser Stelle kann auch mit Mysql gearbeitet werden oder so etwas...
      
     
    echo "Ihre Mitteilung wurde erfolgreich versendet."
      echo 
    "<br>";
     echo 
    "Name: ".$_POST['name'];
      echo 
    "<br>";
      echo 
    "Email: ".$_POST['email'];
      echo 
    "<br>";
        echo 
    "Nachricht: ".$_POST['kommentar'];
          echo 
    "<br>";
      
      
    // Hier wird die IF-Bedingung von oben geschlossen
    mail('@.de',"Nachricht von ".$_POST['name'],$_POST['email'],"Nachricht:"$_POST['kommentar']);
      }
        
      
    // Ist der Wert 1 nicht vorhanden, zeige das Formular.
      
    else
      {
      
    ?>
      
      <form name="Tutorial" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
     
     <?php echo $error['name'];?><br>
      Name:<br>
      <input name="name" type="text" size="25" value="<?php echo $_POST['name'];?>"> <br>
     
     <?php echo $error['email'];?><br>
        Email:<br>
      <input name="email" type="text" size="25" value="<?php echo $_POST['email'];?>"> <br>
     

     <?php echo $error['kommentar'];?><br>
        Ihre Nachricht:<br>
         <textarea name="kommentar" rows="5" cols="40"><?php echo $_POST['kommentar'];?></textarea>  
      <br>
      
     <input type="hidden" name="ueberpruefung" value="1"> 
      <input type="submit" name="Tutorial" value="Absenden">
      </form>
      
      <?php
     
    // Der Else-Zweig wird geschlossen
      
    }
      
    ?>
    vielleicht kann mir ja wer helfen.
    grüße js

  • nikosch
    antwortet
    Bitte beachten!
    Alle Daten außer dem Message Feld müssen auf Vorhandensein von Zeilenumbrüchen untersucht werden! Aufgrund des Aufbaus eines Email Headers besteht sonst die Gefahr einer Email (Header) Injection. Die mail () Funktion leistet diese Überprüfung nicht.

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    stimmt, danke muss mich erst in die syntax von php einfinden....

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Siehst du doch schon den Farben an:
    PHP-Code:
    $error['kommentar'] = "<span class="farbe">Bitte eine Nachricht eingeben!</span>";   // falsch

    $error['kommentar'] = "<span class='farbe'>Bitte eine Nachricht eingeben!</span>";   // richtig 

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    Zitat von David Beitrag anzeigen
    Doch, Du hast doch die HTML Ausgabe für den Browser markiert. Klar gehen da HTML Tags.
    wollte eben den Fehlertext einfärben, leider klappt das nicht

    PHP-Code:
    <?php
    if(isset($_POST['ueberpruefung'])) { 
        
    $allesok true
        if(empty(
    $_POST['name'])){
            
    $allesok false
            
    $error['name'] = "Bitte einen Namen eingeben!";
        } 
        if(empty(
    $_POST['kommentar'])){
            
    $allesok false
            
    $error['kommentar'] = "<span class="farbe">Bitte eine Nachricht eingeben!</span>";
        } 
        if(empty(
    $_POST['email'])){
            
    $allesok false
            
    $error['email'] = "Bitte eine Email eingeben!";
        } 
       
    }
    normale <b> gingen ja, warum das nicht?

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    logisch, ivch verwende ja auch Zeilenumbrüche

    super dank dir nochmals

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Wenn du die Forumsregeln gelesen hättest, dann hättest
    PHP-Code:
    error_reporting(E_ALL); 
    an den Anfang geschrieben und eine ganze Reihe Fehlermeldungen erhalten, über nicht definierte Variablen und falsche Indizes (in $error).
    Und statt einer Unmenge von Kommentaren (ich finde Kommentare enorm wichtig, aber wenn es zuviel sind, verursachen sie nur Verwirrung) würde eine vernünftige Formatierung viel mehr bringen. Also z.B schliessende Klammern genau unter der öffnenden oder unter dem Anfang des zur öffnenden Klammer gehörenden Codes. Hier einfach mal, wie dein Code auch aussehen könnte (Fehler nur teilweise korrigiert):
    PHP-Code:
    <?php
    if(isset($_POST['ueberpruefung'])) { 
        
    $allesok true
        if(empty(
    $_POST['name'])){
            
    $allesok false
            
    $error['name'] = "Bitte einen Namen eingeben!";
        } 
        if(empty(
    $_POST['kommentar'])){
            
    $allesok false
            
    $error['kommentar'] = "Bitte eine Nachricht eingeben!";
        } 
        if(empty(
    $_POST['email'])){
            
    $allesok false
            
    $error['email'] = "Bitte eine Email eingeben!";
        } 
       
    }
    if(
    $allesok){ 
      
        echo 
    "Ihre Mitteilung wurde erfolgreich versendet.<br />"
        echo 
    "Name: " $_POST['name'] . "<br />";
        echo 
    "Email: " $_POST['email'] . "<br />";
        echo 
    "Nachricht: " $_POST['kommentar'] . "<br />";
        
    mail('@.de'"Nachricht von " $_POST['name'] . $_POST['email'], "Nachricht:" $_POST['kommentar']);
    }
    else{
        echo 
    "    
            <form name='Tutorial' method='post' action='" 
    $_SERVER['PHP_SELF'] . "'>" .
             
    $error['name'] . "<br />Name:<br />
            <input name='name' type='text' size='25' value='" 
    $_POST['name'] . "' /><br />" 
            
    $error['email'] . "<br />Email:<br />
            <input name='email' type='text' size='25' value='" 
    $_POST['email'] . "' /><br />" .
             
    $error['kommentar'] . "<br />Ihre Nachricht:<br />
            <textarea name='kommentar' rows='5' cols='40'>" 
    $_POST['kommentar'] . "</textarea><br />
            <input type='hidden' name='ueberpruefung' value='1' /> 
            <input type='submit' name='Tutorial' value='Absenden' />
            </form>\n"
    ;
    }
    ?>

    Einen Kommentar schreiben:


  • David
    antwortet
    Doch, Du hast doch die HTML Ausgabe für den Browser markiert. Klar gehen da HTML Tags.

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    ok verstanden, aber ich lass das jetzt so habe quasi keine php-kenntnisse sonst zerschieß ich den Code nur...

    aber hab noch ne andere kleine frage

    Code:
    if($allesok){ 
        echo "Ihre Mitteilung wurde erfolgreich versendet."; 
          echo "<br>";
        echo "<br>";
         echo "Name: ".$_POST['name'];
          echo "<br>";
          echo "Email: ".$_POST['email'];
          echo "<br>";
        echo "Nachricht: ".$_POST['kommentar'];
        echo "<br>";
    wie kann ich denn die rot markierten Wörter dick machen? normale HTML tags werden wohl kaum gehn ;(

    Einen Kommentar schreiben:


  • David
    antwortet
    redundant meint in diesem Fall "überflüssig".
    Immer wenn Du etwas in $error einträgst, änderst Du auch $allesok. Du musst nur abtesten, ob $error vorhanden/nicht leer ist. Dann kannst Du $allesok ersatzlos streichen.

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    ok das mit dem versenden funktioniert, und ich hab sogar verstanden warum

    redundant bedeutet das es sich stets wiedehrolt? oder wo genau ist grade der "fehler" und warum wirkt er sich nicht (sichtbar) aus?

    Einen Kommentar schreiben:


  • David
    antwortet
    PHP-Code:
    $text $_POST['name']."\r\n".$_POST['email'] . "\r\n" $_POST['kommentar'];
    mail('emailadresse'"Nachricht von ".$_POST['name'], $text); 
    und $allesok ist immer noch redundant

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    ok also:

    $allesok=1 und
    $error['name'] und

    PHP-Code:
    mail('emailadresse',"Nachricht von ".$_POST['name'],$_POST['name'] .$_POST['email'] .$_POST['kommentar'] ); 
    hier hab ich noch das kleine problem das alles durchweg geschrieben wird, ohne abstand oder zeilenumbruch...

    würde gerne nach name und email jeweils eine neue Zeile anfangen

    Einen Kommentar schreiben:


  • David
    antwortet
    Einfach weglassen ist ja auch Quatsch. Mit dem Komma trennst Du den nächsten Parameter ab.
    bool mail ( string $to , string $subject , string $message [, string $additional_headers
    Und damit wird $_POST['kommentar'] zum Parameter additional_headers. Du willst die Zeichenketten miteinader verbinden. Hast Du im Skript auch schon getan. Zum Beispiel hier
    echo "Name: ".$_POST['name'];
    p.s.: Der Code ist immer noch nicht einheitlich eingerückt. $allesok ist immer noch redundant. $error[name] hat immer noch keine Anführungszeichen.

    Einen Kommentar schreiben:


  • jschuhma
    antwortet
    Zitat von David Beitrag anzeigen
    Das passt nicht.
    lösche ich das Kommata raus kommt beim Aufruf der Seite ein Fehler
    Parse error: syntax error, unexpected T_VARIABLE in /mnt/web3/53/81/51260781/htdocs/form/versenden.php on line 31
    hier nochmal der besser strukturierte PHP-Code
    PHP-Code:
     <?php
     
        
    if(isset($_POST['ueberpruefung']))
         { 
              
    $allesok 1


             if(empty(
    $_POST['name'])){
                
    $allesok 0
                
    $error[name] = "Bitte einen Namen eingeben!";} 
      
              if(empty(
    $_POST['kommentar'])){
                 
    $allesok 0
                
    $error[kommentar] = "Bitte eine Nachricht eingeben!";} 
            if(empty(
    $_POST['email'])){
                 
    $allesok 0
                  
    $error[email] = "Bitte eine Email eingeben!";} 
           }
      
      
      if(
    $allesok){ 
        echo 
    "Ihre Mitteilung wurde erfolgreich versendet."
          echo 
    "<br>";
         echo 
    "Name: ".$_POST['name'];
          echo 
    "<br>";
          echo 
    "Email: ".$_POST['email'];
          echo 
    "<br>";
        echo 
    "Nachricht: ".$_POST['kommentar'];
        echo 
    "<br>";
      
        
    mail('jan@img-media.de',"Nachricht von ".$_POST['name'],$_POST['email'],"Nachricht:" $_POST['kommentar']);
        }
        
        
      else
      {
      
    ?>
      
      <form name="versenden" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
     
        <?php echo $error['name'];?><br>
        Name:<br>
          
        <input name="name" type="text" size="25" value="<?php echo $_POST['name'];?>"> <br>
         
        <?php echo $error['email'];?><br>
        Email:<br>
          
        <input name="email" type="text" size="25" value="<?php echo $_POST['email'];?>"> <br>
         
        <?php echo $error['kommentar'];?><br>
        Ihre Nachricht:<br>
            
        <textarea name="kommentar" rows="5" cols="40"><?php echo $_POST['kommentar'];?></textarea>  
        <br>
          
        <input type="hidden" name="ueberpruefung" value="1"> 
        <input type="submit" name="Tutorial" value="Absenden">
     
     </form>
      
      <?php
      
    }
      
    ?>

    Einen Kommentar schreiben:

Lädt...
X