Frage zu Formmailer

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

  • Frage zu Formmailer

    Hallo zusammen,

    um es kurz vorweg zu nehmen, ich bin ein absoluter Newbie in PHP... so.

    Ich habe nun ein HTML Formular gebastelt und möchte mir den Inhalt per Email zukommen zu lassen. Einen Formmailer habe ich schon mit Hilfe eines fertigen Scripts gebastelt. Funzt auch alles. Nur möchte ich gerne auf Nummer sicher gehen und alle tags aus dem eingegebenen Inhalten entfernen. Die entsprechende Funktion in PHP wäre ja meines Wissens strip_tags(), nur leider stehe ich total auf dem Schlauch, weil ich nicht weiß, wo ich diese Funktion einfügen muss?!

    Außerdem wollte ich auch Pflichtfelder definieren, aber auch hier bin ich überfordert... ich finde einfach nicht die richtige Stelle... den entsprechenden Code habe ich schon:

    PHP-Code:

    if(strlen($firma)==0) {
       
    $error_msg="Bitte geben Sie Ihre Firma an.<br>";
    }

    if(isset(
    $error_msg)){
       
    //Eines der Felder wurde nicht korrekt ausgefüllt
    echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br><br>";
    echo 
    $error_msg;
    echo 
    "<br>Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und füllen Sie alle Felder aus.";

    }else{ 
    der Code meines formmailers ist wie folgt:

    PHP-Code:
    <?php

    // An welche Adresse werden die Mails gesendet
    $strEmpfaenger 'ich@email.de';

    // Absender Emailadresse
    $strFrom       '"Anfrage" <info@email.de>';

    // Betreff der Mails
    $strSubject    'Anfrage über Homepage';

    // "Danke-Seite"
    $strReturnhtml 'http://www.internetseite.de/';

    // Zeichen zwischen dem Feldnamen und dem angegebenen Wert
    $strDelimiter  ":\t";



    if(
    $_POST)
    {
     
    $strMailtext "";

     while(list(
    $strName,$value) = each($_POST))
     {
      if(
    is_array($value))
      {
       foreach(
    $value as $value_array)
       {
        
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
       }
      }
      else
      {
       
    $strMailtext .= $strName.$strDelimiter.$value."\n";
      }
     }

     if(
    get_magic_quotes_gpc())
     {
      
    $strMailtext stripslashes($strMailtext);
     }

     
    mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
      or die(
    "Die Mail konnte nicht versendet werden.");
     
    header("Location: $strReturnhtml");
     exit;
    }


    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
        <head>
            <title>Anfrageformular</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
          <body>
            <h1>Anfrageformular</h1>
            <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
                 <table width="699" cellspacing="10">
                     <tr>
                        <td width="266" align="left">Firma</td>
                        <td colspan="3"><input name="Firma" type="text" size="30" /></td>
                     </tr>
                     <tr>
                        <td align="left">Branche</td>
                        <td colspan="3"><input name="Branche" type="text" size="30" /></td>
                     </tr>
                 </table>
              </form>
        </body>
    </html>
    Kann mir irgendjemand vielleicht eine Hilfestellung geben?
    Das wäre super, denn ich hänge hier total fest.

    Danke, Lexis.

  • #2
    tolle sache php code kopieren, ihn dann nicht verstehen und andere um hilfe bitten.....

    wie wär es sich selbst mal gedanken zu machen udn sich mal mit php zu beschäftigen??

    Frage 1:
    PHP-Code:
     if(get_magic_quotes_gpc())
     {
      
    $strMailtext stripslashes($strMailtext);
     }
    $strMailtext=strip_tags($strMailtext);
     
    mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom
    Pflichtfelder:
    Das brauchst du doch nur vo rden restlichen code kopieren

    PHP-Code:
     if($_POST){
    if(
    strlen($firma)==0) {
       
    $error_msg="Bitte geben Sie Ihre Firma an.<br>";
    }

    if(isset(
    $error_msg)){
       
    //Eines der Felder wurde nicht korrekt ausgefüllt
    echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br><br>";
    echo 
    $error_msg;
    echo 
    "<br>Bitte klicken Sie auf <a href=java script:history.back(1)>zurück</a> und füllen Sie alle Felder aus.";

    }else{
    $strMailtext "";

     while(list(
    $strName,$value) = each($_POST))
     {
      if(
    is_array($value))
      {
       foreach(
    $value as $value_array)
       {
        
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
       }
      }
      else
      {
       
    $strMailtext .= $strName.$strDelimiter.$value."\n";
      }
     } 

    Kommentar


    • #3
      Hallo Komikaa,

      danke für Deine schnelle Antwort.

      Glaube mir, ich habe mich wirklich eine lange Weile damit beschäft und verschiedene Varianten ausprobiert. Habs aber einfach nicht umrissen.... und ich habe den Code nicht einfach so kopiert, sondern habe ich für mich nachgeschrieben... aber man versteht halt nicht alles gleich am Anfang.


      Sorry.

      Danke auf jeden Fall für Deine Hilfestellung und werde es gleich mit meinem Formailer testen.

      Danke,
      Lexis.

      Kommentar


      • #4
        na, wenn du schon einiges probiert hast, könntest du uns das mal zeigen und das zugehörige ergebnis nennen.

        Kommentar


        • #5
          @TobiasZ, ja das könnte ich mal machen... muss ich aber das nächste Mal machen, weil ich den bisherigen Code des Formailers immer wieder überschrieben habe.

          Ich danke Euch aber schon mal auf jeden Fall für die Hilfe.

          Liebe Grüße,
          Lexis.

          Kommentar


          • #6
            Also, ich habe jetzt meinen Code soweit angepasst, das mit den Pflichtfeldern funzt auch sehr gut. Vielen Dank nochmal. Nur möchte ich gerne, dass wenn die Fehlermeldung ausgegeben wird, dass die Tabelle nicht mehr angezeigt wird. Erst dann wieder, wenn man auf "zurück" klickt. Ich habe versucht nach der Ausgabe der Fehlermeldung und vor dem else, ein return einzufügen. Die Anzeige hat funktioniert, nur die Email kam unvollständig an. Was hab ich hier noch für Möglichkeiten?!

            Kommentar


            • #7
              welche tabelle?

              normalerweise (bei richtiger einbindung) sollte nur ne mail versendet werden, wenn es keine fehlermeldung gab.

              Kommentar


              • #8
                Ich meinte das Formular.... wenn zum Beispiel einer ein Pflichtfeld nicht ausfüllt, dann kommt die gewissen Fehlermeldung, dass eben dieses nicht ausgefüllt wurde und er möchte bitte auf "zurück" klicken und die entsprechenden Felder vervollständigen. Im Moment sieht es aber so aus, wenn die Meldung kommt, dass unten eben noch das Formular angezeigt wird. Das möchte ich aber gerne unterbinden.

                Kommentar


                • #9
                  dann mach nen
                  else{}

                  um deinen html teil:

                  PHP-Code:
                  else{
                  ?>
                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
                      <head>
                          <title>Anfrageformular</title>
                          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                      </head>
                        <body>
                          <h1>Anfrageformular</h1>
                          <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
                               <table width="699" cellspacing="10">
                                   <tr>
                                      <td width="266" align="left">Firma</td>
                                      <td colspan="3"><input name="Firma" type="text" size="30" /></td>
                                   </tr>
                                   <tr>
                                      <td align="left">Branche</td>
                                      <td colspan="3"><input name="Branche" type="text" size="30" /></td>
                                   </tr>
                               </table>
                            </form>
                      </body>
                  </html> 
                  <?
                  }
                  ?>

                  Kommentar


                  • #10
                    Original geschrieben von Lexis
                    wenn zum Beispiel einer ein Pflichtfeld nicht ausfüllt, dann kommt die gewissen Fehlermeldung, dass eben dieses nicht ausgefüllt wurde und er möchte bitte auf "zurück" klicken und die entsprechenden Felder vervollständigen.
                    Das ist suboptimal.
                    Zumal manche Browser beim "zurück"-Gehen die bereits eingegebenen Formulardaten wieder verwerfen.
                    Im Moment sieht es aber so aus, wenn die Meldung kommt, dass unten eben noch das Formular angezeigt wird.
                    Wunderbar - dann belege es noch mit den bereits getätigten Eingaben vor - dann kann der Benutzer die noch fehlenden gleich auf dieser Seite nachtragen, ohne "zurück" benutzen zu müssen oder sonstige Umstände.
                    Stichwort: Affenformular.
                    Das möchte ich aber gerne unterbinden.
                    Nein, lass es bitte.
                    Du würdest damit den Nutzungskomfort deiner Seite senken.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X