Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenübergabe von JavaScript an PHP Mailer

Einklappen

Neue Werbung 2019

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

  • Datenübergabe von JavaScript an PHP Mailer

    Hallo

    Ich beschäftige mich erst seit kurzer Zeit mit PHP und stehe nun vor folgendem Problem: Für einen Bekannten habe ich einen Routenplaner mit GoogleMaps auf Basis von JavaScript programmiert. Funktioniert einwandfrei - die Strecke von A nach B und andere Faktoren (km-Anzahl und div. Berechnungen) werden verarbeitet und angezeigt.
    Nun möchte er, dass auf einer weiteren Seite diese Ergebnisse per Mail verschickt werden können. Also per Link die Daten übergeben (mailversand.php?start=graz&ziel=wien&entfernung=2 00km ...)

    Auf der Seite für den Mailversand (PHP-Mailer) werden die übergebenen Daten per get übernommen und zur Kontrolle in einem gesperrten Formularfeld angezeigt. Bis dahin funktioniert das ganze auch super. Aber sobald ich das fertig ausgefüllte Formularfeld (<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">) versenden will, verschwinden die übergebenen Daten und werden auch nicht in der Mail mitverschickt!?!

    Auf meiner Suche nach einer Lösung bin ich auf die Unterschiede zwischen POST und GET gekommen und eine mögliche Übergabe via PHP Sessions. Nur leider funktionieren GoogleMaps und die Berechnung nur mit JavaScript und dabei funktioniert wiederum nur eine Übergabe per Link.

    Wie könnte ich dieses Problem denn lösen?

    MfG, Thomas

  • #2
    Das PHP-Script wäre für eine Antwort sehr hilfreich.

    Kommentar


    • #3
      durch debuggen ... wie schickst du denn das "gesperrte" Formular ab?

      ich hoffe mit einem Submit-Button, der nicht gesperrt ist !

      Kommentar


      • #4
        Anbei der Quellcode des PHP-Mailers, den ich mal irgenwo weitergeleitet bekommen habe. Zu Testzwecken habe ich nur mal eine Variable (Abfahrtsort) im Formular angezeigt. Ich habe auch schon versucht, die Variablen direkt in die Mail ($mail_inhalt) zu bekommen, funktioniert auch nicht.

        PHP-Code:
        <?php 
            $zielort
        =$_GET['ziel'];
            
        $entfernung=$_GET['entfernung'];
            
        $spritkosten=$_GET['endpreis'];
            
        $abfahrtsort=$_GET['start'];


        echo 
        "<p>Abfahrtsort:</b> ""Zielort:</b> "$zielort"<br />""Entfernung:</b> "$entfernung"<br />""Spritkosten:</b> "$spritkosten" Euro</p>"
                    
                    
            
        $empfaenger="thomas@meinemail.at";
            
        $name=$_POST['input_name'];
            
        $telefon=$_POST['input_telefon'];
            
        $mailadresse=strtolower($_POST['input_mailadresse']);
            
        $nachricht=$_POST['input_nachricht'];
            if(
        trim($name)==""$err_text.="Bitte geben Sie Ihren Namen an!<br>";
            if(
        trim($mailadresse)==""$err_text.="Bitte geben Sie Ihre E-Mail-Adresse an!<br>";
            else
            if(!
        ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$",$mailadresse)) $err_text.="Bitte geben Sie eine g&uuml;ltige E-Mail-Adresse an!<br>";
                    if(
        trim($telefon)==""$err_text.="Bitte geben Sie Ihren Telefonnummer an!<br>";
            
        $betreff="Mail vom Routenrechner";
                
        $name=str_replace(chr(34),"''",$name);  
            
        $name=stripslashes($name);
            
        $telefon=str_replace(chr(34),"''",$telefon);
            
        $telefon=stripslashes($telefon);
            
        $mailadresse=stripslashes($mailadresse);
            
        $nachricht=str_replace(chr(34),"''",$nachricht);
            
        $nachricht=stripslashes($nachricht);
            
        $abfahrtort=str_replace(chr(34),"''",$abfahrtort);
            
        $abfahrtort=stripslashes($abfahrtort);    
            
        $zielort=str_replace(chr(34),"''",$zielort);
            
        $zielort=stripslashes($zielort);        
            
        $entfernung=str_replace(chr(34),"''",$entfernung);
            
        $entfernung=stripslashes($entfernung);            
            
        $spritkosten=str_replace(chr(34),"''",$spritkosten);
            
        $spritkosten=stripslashes($spritkosten);            

                    if((
        $_POST) && (isset($err_text))) echo "$err_text</p>";

                    if((
        $_POST) && (empty($err_text)))
                    {
            
                        
        $header="From: $name <$mailadresse>\n";
                          
        $header.="Reply-To: mailadresse\n";
                          
        $header.="Content-Type: text/plain";
                          
        $mail_date=gmdate("D, d M Y H:i:s")." +0000";
          
                          
        $mail_inhalt ="Folgende Route wurde versendet: \n".$name." \n".$mailadresse." \n".$telefon." \n".$abfahrtsort;
            
                        
        mail($empfaenger,$betreff,$mail_inhalt,$header);
                        echo 
        "<p><b>Ihre Nachricht wurde gesendet.</b></p>";
                    }  
                    
        ?>






                    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
                    <br />  
                    <table border="0" cellspacing="2" cellpadding="0" width="400px">

                    <tr valign="top"><td height="25px" align="right" nowrap="nowrap">Start:&nbsp;</td>
                    <td width="100%"><input type="text" name="input_start" size="41" maxlength="120" value="<?php echo $abfahrtsort?>" disabled /></td></tr>

                    <tr valign="top"><td height="25px" align="right" nowrap="nowrap">Name:*&nbsp;</td>
                    <td width="100%"><input type="text" name="input_name" size="41" maxlength="120" value="<?php echo $name?>" /></td></tr>
                    
                    <tr valign="top"><td height="25px" align="right" nowrap="nowrap">Telefon:*&nbsp;</td>
                    <td width="100%"><input type="text" name="input_telefon" size="41" maxlength="120" value="<?php echo $telefon?>" /></td></tr>

                    <tr valign="top"><td height="25px" align="right" nowrap="nowrap">E-Mail:*&nbsp;</td>
                    <td width="100%"><input type="text" name="input_mailadresse" size="41" maxlength="120" value="<?php echo $mailadresse?>" /></td></tr>
                    
                    <tr valign="top"><td align="right" valign="top" nowrap="nowrap">Nachricht:&nbsp;</td>
                    <td width="100%"><textarea cols="36" rows="10" name="input_nachricht"><?php echo $nachricht?></textarea></td></tr>

                    
                    <tr><td></td>
                    <td><br />
                     <input name="submit" type="image" value="wert" src="http://www.php.de/images/btn_absenden.jpg" alt="Absenden" />

        </td></tr>

        </table>

        Kommentar


        • #5
          <input type="image" sendet aber kein Formular ab ....

          du musst ihm dann ein onclick-Javascript "spendieren", dass dein Formular absendet, wenn du ein image-Button nehmen willst

          Kommentar


          • #6
            Der Absende-Button funktioniert so - ich bekomme ja eine Mail mit den Formulardaten. Nur die per GET übernommenen Daten fehlen in der Mail und nach dem Absenden sind auch diese übernommenen Daten, die vorher angezeigt wurden, weg. Das restlich ausgefüllte Formular wird weiterhin richtig angezeigt.

            Kommentar


            • #7
              Per disabled gesperrte Felder werden nicht gesendet, nimm hidden ...

              Kommentar


              • #8
                edit: sry nur die Hälfte gelesen, Antwort ist daher Trash

                Kommentar


                • #9
                  Zitat von eagle275 Beitrag anzeigen
                  <input type="image" sendet aber kein Formular ab ....

                  du musst ihm dann ein onclick-Javascript "spendieren", dass dein Formular absendet, wenn du ein image-Button nehmen willst
                  Wo hastn du diese Weisheit her? Na klar kann ich damit ein Formular absenden. Man muss nur die Koordinaten mitgeben.

                  Kommentar


                  • #10
                    Zitat von jspit Beitrag anzeigen
                    Per disabled gesperrte Felder werden nicht gesendet, nimm hidden ...
                    Und es funktioniert, alle Daten kommen per Mail wie sie sollen - herzlichen Dank! Das Problem ist jetzt nur, die Formularfelder der übergebenen Infos sind versteckt (hidden). Zur Überprüfung der Daten habe ich diese nun mittels echo ausgegeben. Nur nach dem Abschicken sind diese weg, sprich die Variablen anscheinend leer. Kann ich das irgendwie umgehen bzw. fix stehen lassen? Anbei mal die betroffenen Codeschnippsel für eine Variable ...

                    PHP-Code:
                      $abfahrtsort=$_GET['start'];       //Übernahme der Variable aus der URL

                      echo "Abfahrtsort: ", $abfahrtsort; //Ausgabe zur Kontrolle

                      $abfahrt01=$_POST['input_start'];   // Übernahme der Informationen aus dem Formular

                    // im Formularteil
                      <input type="text" name="input_start" size="41" maxlength="120" value="<?php echo $abfahrtsort?>" hidden />   //"Ausgabe" der URL-Variable zur Übergabe ins Formular

                    Kommentar


                    • #11
                      Suchst du das Attribut readonly="readonly" ?

                      Also:
                      <input type="text" name="foo" value="foobar" readonly="readonly" />
                      //Edit: readonly statt das per css auf hidden zu setzen.

                      Kommentar


                      • #12
                        Wenndu von GET auf POST umschwenkst mußt du auch beide abtesten,
                        in etwa so:
                        PHP-Code:
                        if(isset($_GET['start'])) $abfahrtsort=$_GET['start'];
                        elseif (isset(
                        $_POST['input_start'])) $abfahrtsort=$_POST['input_start'];
                        else 
                        $abfahrtsort="defaultwert"
                        Es Prüfen/Filtern von $abfahrtsort ist dringend anzuraten, man weiß nie was vom Client alles kommen kann.

                        Kommentar


                        • #13
                          Außerdem solltest du auf ereg verzichten (bzw. auf preg_* ausweichen).

                          ereg ist seit 5.2 DEPRECATED.

                          Auch würde ich dir eine PHP-Mailerklasse nahelegen, ansosnten wird es ein Lebenswerk werden, alle mögliche Header-"Bugs" vorherzusehen und zu fixen.

                          z.B.: http://phpmailer.worxware.com/

                          Kommentar

                          Lädt...
                          X