Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablenverlust bei php-Mail an Outlook

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variablenverlust bei php-Mail an Outlook

    Guten Tag

    Also ich plage mich seit vorgestern mit einem php-Mail, welches ein Formular enthält, das einige Daten per ‚hidden‘ an den Server senden soll, dort eine bestimmte Seite aufrufen und – auf Grund der mitgeschickten Variablen - in dieser bestimmte Daten einfügen soll.

    Und es funktioniert alles einwandfrei, solange das Php-Mail an ein Webmail gesendet wird. (Zum Beispiel yahoo.de, usw.) Sobald das Mail aber an Outlook gesendet wird und jemand klickt dort den Link an, wird er zwar an die richtige Adresse gelenkt, aber die Variableninhalte (value) werden nicht übergeben.

    Der Code sieht (gekürzt) so aus:
    PHP-Code:
    <?php 
    $nachricht
    '<h1> Hallo…</h1>   <p > xxxxxx…</p>

    <form name="such" method="post" action="http://xxxxx.xxx/xxx.php">
     <input name="kontakt"  type="hidden" id="kontakt" value= "' 
    $artikel2 .'" />
     <input name="kontakt1" type="hidden" id="kontakt" value= "' 
    $ida .'" />
     <input name="kontakt2" type="hidden" id="kontakt" value= "' 
    $artikel1 .'" />
     <input name="kontakt3" type="hidden" id="kontakt" value= "' 
    $idta .'" />
     <center><p > '
    .$artikel.' ansehen?</p></center>
     <center> <input style="margin-top: -0.8em;" type="image" src="http://xxxxxxx.xx/Grafik.gif"
     ALT="Wenn Grafik nicht sichtbar dann bitte hier klicken"name="submit" /></center><br /><br />
    '
    ;

    $an "xxxxxxxxx@aon.at";
    $betreff "Angebot";
    $xtra "From:    com@xxxxxxxx.xxx (xxxxxxx)\r\n";
    $xtra .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
    $xtra .= "X-Mailer: PHP "phpversion();

    mail($an$betreff$nachricht$xtra);
     
    ?>
    Ich weiß, dass ein Unterschied zwischen einem Webmail und Outlook besteht, aber ich habe noch keinen Hinweis gefunden, wie ich den Code verändern muss, damit die Variablen auch bei Outlook an den Server übergeben werden, sowie es auch bei Webmails problemlos funktioniert.

    Meine Vermutung: an dieser Zeile sollte eine Änderung vorgenommen werden. Aber welche ?

    PHP-Code:
    $xtra .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n"


  • #2
    Zitat von MrVienna Beitrag anzeigen
    Sobald das Mail aber an Outlook gesendet wird und jemand klickt dort den Link an, wird er zwar an die richtige Adresse gelenkt, aber die Variableninhalte (value) werden nicht übergeben.
    Von welchen „Variableninhalten“ redest du denn hier? Von den Feldern in dem Formular? Das Formular gehört also zum Inhalt der Mail, und soll aus der Anzeige der Mail heraus verschickt werden?

    Formulare werden nicht abgeschickt, wenn auf einen Link geklickt wird.
    Zum Abschicken von Formularen gibt es Submit-Buttons.

    Kommentar


    • #3
      @ChrisB

      Danke für Deine Antwort.

      Also, um es kurz zu machen. Mit dem Mail wird das Formular mitgeschickt welches hier dem Submit enthält
      PHP-Code:
      <center> <input style="margin-top: -0.8em;" type="image" src="http://xxxxxxx.xx/Grafik.gif"
       
      ALT="Wenn Grafik nicht sichtbar dann bitte hier klicken"name="submit" /></center><br /><br /> 
      womit dann auf der Zielseite diese Variablen übergeben werden sollen:

      PHP-Code:
      <input name="kontakt"  type="hidden" id="kontakt" value"' . $artikel2 .'" />
       <
      input name="kontakt1" type="hidden" id="kontakt" value"' . $ida .'" />
       <
      input name="kontakt2" type="hidden" id="kontakt" value"' . $artikel1 .'" />
       <
      input name="kontakt3" type="hidden" id="kontakt" value"' . $idta .'" /> 
      Diese Variablen ( $artikel2,$ida,$artikel1,$idta) werden aber nicht übergeben, wenn der Submit im Outlook geklickt wird.

      Kommentar


      • #4
        Diese Variablen ( $artikel2,$ida,$artikel1,$idta) werden aber nicht übergeben
        Erst mal, bitte sauber mit den Begrifflichkeiten umgehen. (War bei Submit-Button vs. „Link klicken“ auch schon nicht der Fall.)

        „Variablen“ gibt es im Formular keine. Da gibt es höchstens Formularfelder. Und die werden beim Abschicken des Formulars als Parameter übermittelt.
        Variablen werden daraus frühestens in der Sprache, die diesen Request verarbeitet. Aber auch in PHP werden daraus seit Ewigkeiten schon keine globalen Variablen mehr, sondern nur Einträge in den jeweiligen superglobalen Arrays (Stichwort register_globals=off) - ist dir das klar? Wenn du hier von Variablen namens $artikel2 etc. redest, die du im Script als gegeben erwartest, dann klingt das eher so, als ob es dir nicht klar wäre.


        Wie hast du denn überprüft, was alles mit dem Request übergeben wurde?
        Mal den Inhalt von $_POST zur Kontrolle ausgeben lassen? Was kam dabei heraus?


        Dass das Absenden von Formularen nicht aus jedem Programm heraus, welches dafür nicht in erster Linie gedacht ist, funktioniert, ist vorstellbar.

        Kommentar


        • #5
          Also, um es kurz zu machen. Mit dem Mail wird das Formular mitgeschickt welches hier dem Submit enthält

          womit dann auf der Zielseite diese Variablen übergeben werden sollen:
          So funktioniert es nicht. Form, Eingabefelder und Submitbutton müssen immer eine Einheit bilden, die auf der selben Seite liegen. Alleine schon, weil bei offener Mail noch lange nicht der Browser auf der Formularseite offen sein muss, geschweige denn Daten eingetragen. Technisch gesehen ist auch nicht gewährleistet, dass Form und E-Mail beim selben Client liegen.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zunächst pardon, wenn ich mich hier im Einsteiger-Forum nicht perfekt fachmännisch ausdrücke.

            Zu Deiner Frage:

            Wie hast du denn überprüft, was alles mit dem Request übergeben wurde?
            Mal den Inhalt von $_POST zur Kontrolle ausgeben lassen? Was kam dabei heraus?
            Natürlich habe ich versucht auf der Zielseite den $_POST-Inhalt mit echo aufzurufen, um die Übergabe zu überprüfen.

            Aber es verhält sich so, wie ich es schon in meinem ersten posting (zwar wenig fachmännisch) beschrieben habe: Es funktioniert bei allen Webmails, aber nicht bei Outlook.

            Kommentar


            • #7
              Zitat von nikosch Beitrag anzeigen
              Form, Eingabefelder und Submitbutton müssen immer eine Einheit bilden, die auf der selben Seite liegen.
              Tun sie ja - sie befinden sich in einem HTML-Dokument, welches im Mailprogramm angezeigt werden soll.

              Alleine schon, weil bei offener Mail noch lange nicht der Browser auf der Formularseite offen sein muss, geschweige denn Daten eingetragen.
              Es reicht ja auch, wenn der Mailclient beim Abschicken des Formulars ein neues Browserfenster öffnet. Mit normalen Links funktioniert das idR. - aber da sind die Daten eben auch schon direkt in der Adresse enthalten.
              Ob die Übergabe von Daten, die per POST übertragen werden sollen, vom Mailclient an den Browser reibungslos funktioniert, ist allerdings in der Tat erst mal zweifelhaft. Da müssten die Daten, die nicht zur Adresse gehören, ja irgendwie separat übergeben werden. Ob das überhaupt implementiert ist, steht ja nicht mal fest. Sich darauf zu verlassen, ist in einer Umgebung, über die man keinerlei Kontrolle hat, natürlich riskant.

              Kommentar


              • #8
                @nikosch

                So funktioniert es nicht. Form, Eingabefelder und Submitbutton müssen immer eine Einheit bilden, die
                Der richtige Code sieht so aus, wie im ersten posting von mir. Ich habe den Submit nur gesondert angeführt, weil ich danach gefragt wurde.

                Kommentar


                • #9
                  Zitat von MrVienna Beitrag anzeigen
                  Es funktioniert bei allen Webmails, aber nicht bei Outlook.
                  Das ist ja auch etwas ganz anderes.

                  Ein Webmail-Interface wird im Browser angezeigt - es gehört zu dessen Kernaufgaben, HTML-Dokumente darzustellen und ggf. darin enthaltene Formulare abschicken zu können. Dabei hat er ja auch alle Daten, die er zur Durchführung dieser Aufgabe benötigt, schon vorliegen.

                  Wenn du aus Outlook heraus eine Webadresse öffnen willst, müssen aber erst mal die relevanten Daten von Outlook an den (genauer: einen) Browser übergeben werden. Das mag mit einer GET-Adresse problemlos klappen, weil das nur ein Textliteral ist, und Browser auf entsprechende Übergabe eines solchen per (Kommandozeilen-/Aufruf-)Parameter vorbereitet sind.

                  Wenn du ein POST-Formular vom Mailcient an einen Browser übergeben willst, müssen da aber neben der Adresse noch weitere Daten überreicht werden. Und ob das überhaupt implementiert ist, halte ich für zweifelhaft.

                  Kommentar


                  • #10
                    Tun sie ja - sie befinden sich in einem HTML-Dokument, welches im Mailprogramm angezeigt werden soll.
                    Konnte ich so bisher noch nicht herauslesen.
                    Es reicht ja auch, wenn der Mailclient beim Abschicken des Formulars ein neues Browserfenster öffnet.
                    Naja, unter diesen Vorzeichen ist das Problem ja ganz anders. Keine Ahnung, ob Outlook (und andere Clients) das können. Als erstes würde ich die Firewalleinstellungen prüfen. Und das zeigt auch schon die Unsionnigkeit dieses Plans - Denn über das Zielsystems weißt Du eben nichts. Im Browser kann man davon ausgehen, dass Formulare funktionieren, ob Mailclients Seiten aufrufen können, ist dagegen bei weitem nicht garantiert.


                    [edit]
                    Wenn du ein POST-Formular vom Mailcient an einen Browser übergeben willst, müssen da aber neben der Adresse noch weitere Daten überreicht werden. Und ob das überhaupt implementiert ist, halte ich für zweifelhaft.
                    Naja, das ist ein normaler HTTP-Request. Da ist nicht viel drin. Richtig ist aber, dass ein Mail-Client nicht zwingend solche Funktionalität abbilden muss (auch wenn die meisten wohl Browsermodule wiederverwerten dürften, Outlook vermutlich den Internetexplorer). Allerdings können die meisten Clients auch Bilder einbinden oder Scripte (oft Grund für Sicherheitslücken), was ja auch HTTP-Requests erfordert.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      @ChrisB

                      Ob die Übergabe von Daten, die per POST übertragen werden sollen, vom Mailclient an den Browser reibungslos funktioniert, ist allerdings in der Tat erst mal zweifelhaft.
                      Funktioniert reibungslos von jedem Webmail. Von Outlook aber nicht. Was auch meine Frage begründet.

                      Kommentar


                      • #12
                        Funktioniert reibungslos von jedem Webmail. Von Outlook aber nicht
                        Du hast die ANtwort nicht gelesen!
                        Das ist ja auch etwas ganz anderes.

                        Ein Webmail-Interface wird im Browser angezeigt - es gehört zu dessen Kernaufgaben, HTML-Dokumente darzustellen…
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Zunächst danke an die bisherige Hilfe.

                          Was ich schon überlegt habe und auch hier herausgelesen habe, ist die Möglichkeit, die Daten mit get, anstatt mit post zu übergeben.

                          Zwar gefällt mir diese Lösung nicht, weil man dann alles in der Adresszeile mitlesen kann, aber wenn es damit auch im Outlook funktioniert, werde ich wohl keine andere Wahl haben?

                          Kommentar


                          • #14
                            Das Gelbe vom Ei ist das auch nicht. Nicht umsonst wird klassischerweise in Opt-In=Mails immer auch der Link zum C&P angeboten. Wenn da dann ein Linkmonster steht, sieht das wohl sehr gewöhnungsbedürftig aus.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Wenn da dann ein Linkmonster steht, sieht das wohl sehr gewöhnungsbedürftig aus.
                              Das ist es ja eben, was mich davor zurückhalt.

                              Muss jetzt leider weg. Und werde mich morgen der nächst besten Lösung zuwenden. (Wahrscheinlich doch get)

                              Ich wünsche noch einen schönen Abend.

                              Kommentar

                              Lädt...
                              X