Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular Mailer

Einklappen

Neue Werbung 2019

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

  • Formular Mailer

    Hallo alle zusammen!

    Gleich vor weg, ich bin blutiger Anfänger und versuche mir mit den Foren weiter zu helfen. Jetzt stehe ich aber voll an.
    Ich habe mir einen Formular Mailer erstellt. Als Erstes schaut er welche Felder der Pflichtfelder leer geblieben sind und wenn da alles passt, soll er es per Mail weiter leiten. Es funktioniert soweit alles, nur dass er mir die Daten die im Formular eingegeben wurden nicht ins Mail über nimmt. Keine Ahnung woran an es liegt. Ich hab schon einiges ausprobiert. Vielleicht kann mir hier jemand helfen. Hier mal der php-code des Formularmailers:

    <?php
    $script = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"];

    $errorFields = array('firstname',
    'surname',
    'email',
    'resort',
    'startdate',
    'enddate',
    'agb'
    );

    for($x=0;$x<count($errorFields);$x++)
    {
    $errorClass[$errorFields[$x]] = 'inputField';
    }

    if(isset($_POST['submit']))
    {

    $error = FALSE;
    foreach($errorFields as $key => $value)
    {

    if(empty($_POST[$errorFields[$key]]))
    {
    $error = TRUE;
    $errorClass[$value] = 'errorField';
    $errorPicture[$value] = '<img src="photos/pagedesing/achtung.png">&nbsp;';
    $firstname = $_POST['firstname'];
    }

    }

    }

    if(isset($_POST['submit'])){

    if($error == TRUE)
    {
    $errorMessage = '<p class="text"><img src="photos/pagedesing/achtung.png" width="15" height="15"> Watch Out!
    There has been an error. Please fill in all
    colored marked mandatory fields.</p>';
    }
    else
    {

    // Alles ist in Ordnung
    // Daten können gespeichert werden

    // Seite neu laden und Hinweis anzeigen
    header("Location: $script?check=TRUE");
    }
    }


    if($_GET['check'] == "TRUE")
    {
    // ======= Konfiguration:

    $mailTo = 'office@whiteguides-skiing.com';
    $mailFrom = 'whiteguides@whiteguides-skiing.com';
    $mailSubject = 'Buchungsanfrage';
    $returnPage = 'http://www.whiteguides-skiing.com/index/thankspage-d.html';
    $returnErrorPage = 'http://www.whiteguides-skiing.com/index/errorpage-d.html';
    $name = $firstname;
    $mailText = "Vielen Dank für die Buchung
    firstname: $name
    ";


    foreach ($_GET as $key => $value )
    {
    echo "Name: ",$key," Wert :",$value;
    }



    // ======= Text der Mail aus den Formularfeldern erstellen:

    // Wenn Daten mit method="post" versendet wurden:
    if(isset($_POST)) {
    // alle Formularfelder der Reihe nach durchgehen:
    foreach($_POST as $key => $value) {
    // Wenn der Feldwert aus mehreren Werten besteht:
    // (z.B. <select multiple>)
    if(is_array($value)) {

    // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen
    $mailText .= $name . ":\n";
    // alle Werte des Feldes abarbeiten
    foreach($valueArray as $entry) {
    // Einrückungsleerzeichen, Wert und Zeilenumbruch
    // dem Mailtext hinzufügen
    $mailText .= " " . $value . "\n";
    } // ENDE: foreach
    } // ENDE: if
    // Wenn der Feldwert ein einzelner Feldwert ist:
    else {
    // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen
    $mailText .= $name . ": " . $value . "\n";
    } // ENDE: else
    } // ENDE: foreach
    } // if

    // ======= Korrekturen vor dem Mailversand

    // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt:
    if(get_magic_quotes_gpc()) {
    // eventuell eingefügte Backslashes entfernen
    $mailtext = stripslashes($mailtext);
    }

    // ======= Mailversand


    // Mail versenden und Versanderfolg merken
    $mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);

    // ======= Return-Seite an den Browser senden

    // Wenn der Mailversand erfolgreich war:
    if($mailSent == TRUE) {
    // Seite "Formular verarbeitet" senden:
    header("Location: " . $returnPage);
    }
    // Wenn die Mail nicht versendet werden konnte:
    else {
    // Seite "Fehler aufgetreten" senden:
    header("Location: " . $returnErrorPage);
    }

    // ======= Ende

    exit();

    }

    ?>

  • #2
    Das wird daran liegen, daß Deine Mail nicht RFC konform ist.
    Gleich vor weg, ich bin blutiger Anfänger und versuche mir mit den Foren weiter zu helfen.
    Dann solltest Du mehr als einmal gelesen haben, daß Mailer-Klassen sinnvoller sind, als die mail()-Funktion.

    Generell machst Du auch den "Fehler", daß Du immer wieder springst.
    Du prüfst 3x ob $_POST übergeben wurde, warum nicht alles in einem Block unterbringen?

    Zudem machst Du eine HTTP-Weiterleitung per GET, so daß die ganzen von Dir erwarteten Parameter und Werte gar nicht mehr existieren!

    Die Logik muß sein: Wenn POST-Daten vorhanden und keine Fehler, dann versende Mail ( mit Mailer-Klasse! ), ansonsten gebe Fehlermeldung aus.
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Danke für deine Hilfe! Hab jetzt nur noch das Problem, dass ich dich hier nicht ganz verstehe:

      Zudem machst Du eine HTTP-Weiterleitung per GET, so daß die ganzen von Dir erwarteten Parameter und Werte gar nicht mehr existieren!
      Kannst du mir anhand meines Codes sagen, was ich ändern muss?

      Danke

      Kommentar


      • #4
        Damit andere Deinen Code auch sinnvoll lesen können ist es angebracht den Code als PHP code einzufügen.

        Da Du das sicher nicht weist, hab ichs Dir mal abgenommen.

        PHP-Code:
        <?php

        $script 
        'http://' $_SERVER"SERVER_NAME" ] . $_SERVER"SCRIPT_NAME" ];

        $errorFields = array(
           
        'firstname',
           
        'surname',
           
        'email',
           
        'resort',
           
        'startdate',
           
        'enddate',
           
        'agb'
        );

        // Before you use the

        for ( $x 0$x count$errorFields ); $x++ )
        {
           
        $errorClass$errorFields$x ] ] = 'inputField';
        }

        if ( 
        filter_has_varINPUT_POST'submit' ) )
        {

           
        $error FALSE;
           foreach ( 
        $errorFields as $key => $value )
           {

              if ( empty( 
        $_POST$errorFields$key ] ] ) )
              {
                 
        $error TRUE;
                 
        $errorClass$value ] = 'errorField';
                 
        $errorPicture$value ] = '<img src="photos/pagedesing/achtung.png">&nbsp;';
                 
        $firstname $_POST'firstname' ];
              }
           }
        }

        if ( isset( 
        $_POST'submit' ] ) )
        {

           if ( 
        $error == TRUE )
           {
              
        $errorMessage '<p class="text"><img src="photos/pagedesing/achtung.png" width="15" height="15"> Watch Out!
        There has been an error. Please fill in all
        colored marked mandatory fields.</p>'
        ;
           }
           else
           {

              
        // Alles ist in Ordnung
              // Daten können gespeichert werden
              // Formular Mailer und Hinweis anzeigen
              
        header"Location: $script?check=TRUE" );
           }
        }


        if ( 
        $_GET'check' ] == "TRUE" )
        {
           
        // ======= Konfiguration:

           
        $mailTo 'office@whiteguides-skiing.com';
           
        $mailFrom 'whiteguides@whiteguides-skiing.com';
           
        $mailSubject 'Buchungsanfrage';
           
        $returnPage 'http://www.whiteguides-skiing.com/index/thankspage-d.html';
           
        $returnErrorPage 'http://www.whiteguides-skiing.com/index/errorpage-d.html';
           
        $name $firstname;
           
        $mailText "Vielen Dank für die Buchung
        firstname: 
        $name
        "
        ;


           foreach ( 
        $_GET as $key => $value )
           {
              echo 
        "Name: "$key" Wert :"$value;
           }



           
        // ======= Text der Mail aus den Formularfeldern erstellen:
           // Wenn Daten mit method="post" versendet wurden:
           
        if ( isset( $_POST ) )
           {
              
        // alle Formularfelder der Reihe nach durchgehen:
              
        foreach ( $_POST as $key => $value )
              {
                 
        // Wenn der Feldwert aus mehreren Werten besteht:
                 // (z.B. <select multiple>)
                 
        if ( is_array$value ) )
                 {

                    
        // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen
                    
        $mailText .= $name ":\n";
                    
        // alle Werte des Feldes abarbeiten
                    
        foreach ( $valueArray as $entry )
                    {
                       
        // Einrückungsleerzeichen, Wert und Zeilenumbruch
                       // dem Mailtext hinzufügen
                       
        $mailText .= " " $value "\n";
                    } 
        // ENDE: foreach
                 
        // ENDE: if
                 // Wenn der Feldwert ein einzelner Feldwert ist:
                 
        else
                 {
                    
        // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen
                    
        $mailText .= $name ": " $value "\n";
                 } 
        // ENDE: else
              
        // ENDE: foreach
           
        // if
           // ======= Korrekturen vor dem Mailversand
           // Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt:
           
        if ( get_magic_quotes_gpc() )
           {
              
        // eventuell eingefügte Backslashes entfernen
              
        $mailtext stripslashes$mailtext );
           }

           
        // ======= Mailversand
           // Mail versenden und Versanderfolg merken
           
        $mailSent = @mail$mailTo$mailSubject$mailText"From: " $mailFrom );

           
        // ======= Return-Seite an den Browser senden
           // Wenn der Mailversand erfolgreich war:
           
        if ( $mailSent == TRUE )
           {
              
        // Seite "Formular verarbeitet" senden:
              
        header"Location: " $returnPage );
           }
           
        // Wenn die Mail nicht versendet werden konnte:
           
        else
           {
              
        // Seite "Fehler aufgetreten" senden:
              
        header"Location: " $returnErrorPage );
           }

           
        // ======= Ende

           
        exit();
        }
        MfG, Ulf
        PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

        Kommentar


        • #5
          Kannst du mir anhand meines Codes sagen, was ich ändern muss?
          Naja, das hier macht keinen Sinn ( Danke Ulfikado fürs formatieren )
          PHP-Code:
          // ...du machst eine HTTP-Weiterleitung, wobei der gesamte POST verloren geht
          header"Location: $script?check=TRUE" );

          // ...dann prüfst Du, ob check=TRUE ist
          if ( $_GET'check' ] == "TRUE" ) {

              
          // ...und hier drin greifst Du auf $_POST zu!
              // ...woher sollen die POST-Daten kommen, wenn Du keine überträgst?!


          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar

          Lädt...
          X