Sebastian: generierte, per mail() versendete url kommt ohne variablen an

Hallo nächtliche Selfer,

habe ein total irres Problem und weiß keinen Rat:
Nach der Eingabe einiger Werte über ein Formular in eine MySQL-DB wird an einen Administrator eine Mail generiert, in der ein Link angegeben werden soll, der zum neuen Eintrag führt. Dort kann er ihngenehmigen oder ablehnen.

Ich erstelle also als eine Zeile meines Mail-Textes folgendes:

$mail_body.="http://www.domain.de/pruefung.php?id=" . $id . "&nr=" . $nr;

Und was kommt in der Mail an? Das hier:

http://www.domain.de/pruefung.php?id=&nr=

Jetzt werdet ihr vielleicht sagen: "Dann sind die Variablen nicht definiert." Dachte ich mir auch und ließ auf der Ausgabeseite probehalber per

echo "http://www.domain.de/pruefung.php?id=" . $id . "&nr=" . $nr;

die eigentlich in der Mail erscheinen sollende Zeile ausgeben. Und dort steht auch ganz brav:

http://www.domain.de/pruefung.php?id=2&nr=3

Woran liegt denn dieses Kuriosum?
Danke für Tipps - trotz der späten Stunde - und Gruß -
Sebastian

  1. Hallo Sebastian,

    gib doch mal "echo $mail_body;" aus...;

    gruß, frankx

    1. Hallo Frankx,

      gib doch mal "echo $mail_body;" aus...;

      Auch hier das normal zu erwartende Ergebnis: Ausgabe mit Parametern.
      Offenbar mag die mail()-Funktion keine Parameter übergeben. Aber warum nicht?

      Gruß -
      Sebastian

      1. Hallo Sebastian,

        wie packst du es denn in die Mailfunktion rein? du musst doch parameter übergeben, und die variable, die du übergibst enthält doch das, was du im echo zu sehen bekommst...; bei mir funktioniert das prima...???

        Gruß, Frankx

        1. Hallo Frankx,

          wie packst du es denn in die Mailfunktion rein?

          Na so, wie ich's im OP beschrieben habe.

          bei mir funktioniert das prima...???

          So müsste es ja auch eigentlich sein, deshalb wundert's mich ja so extremst.
          Immer noch keine Lösung!!!?! Und ich verzweifle langsam aber sicher...

          Gruß -
          Sebastian

          1. Hallo Frankx,

            wie packst du es denn in die Mailfunktion rein?
            Na so, wie ich's im OP beschrieben habe.

            na da fehlt dann ja doch noch die zeile mit der mailfunktion, oder?

            also so wie unten gehts, vielleicht hilft das ja was:

            <?php
            /* postvars */
            $kommentar = $_POST['Kommentar']
            etc. pp...
            ;

            /* recipients */
            $to  = "ich@provider.de" . ", " ; // note the comma
            $to .= $email;

            /* subject */
            $subject = "Kontakt via Hompage/Buchungsanfrage";

            /* message */
            $message = "
            <html>
            <head>
            <title>Kontakt via Homepage</title>
            </head>
            <body>
            <p>Sehr geehrte/r " . $name. "</p>

            ...

            <p>Kommentar: " . $kommentar."</p>
            <br>
            <p>Mit bestem Gruß,
            <br><br>
            Grußname
            </html>
            </body>";

            /* To send HTML mail, you can set the Content-type header. */
            $headers  = "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

            /* additional headers */
            $headers .= "To:" . $name. "<". $email . ">\r\n";
            $headers .= "From: Absenderabsender@provider.de\r\n";

            /* and now mail it */
            mail($to, $subject, $message, $headers);
            echo "folgende Daten wurden per Mail an Sie  übermittelt:<br><br><hr>";
            echo $message;
            echo "mit freundlichem Gruß, <br><br>";
            ?>

            gruß, frankx

            1. Hallo Frankx,

              wenn du mein OP genau gelesen hättest, wüsstest du, dass eine Mail bei mir ankommt, die allen gewünschten Text enthält, außer den beiden Variablen.
              Dass ich also die Mailfunktion drin habe, versteht sich von selbst.

              Mir ging es darum, die Seltsamkeit darzustellen, wie ein und dieselbe Textzeile als echo "" ausgegeben funktioniert und als mail() verschickt nicht funktioniert.

              Und da dieses Problem weiterhin besteht, würde ich mich über Tipps und Ideen freuen. Dir trotzdem lieben Dank für deine Antworten zu später Stunde!

              Schnes Wochenende und Gruß -
              Sebastian

              1. Hallo Sebastian,

                Deine Antwort bzw. Dein Problem hatte ich genau gelesen.

                Beim Debugging gehe ich immer Schritt für Schritt vor. Und wenn Du nicht alle Schritte rausrückst (zB. wie genau Du die Mailfunktion aufrufst), dann kann zB. ich dort natürlich auch keinen Fehler finden.

                In meiner Antwort habe ich deshalb meinen Mail-Code in Auszügen dargestellt, damit Du das selbst mal vergleichen kannst. Mit meinem Code funktioniert das übermitteln auch der Inhalte!

                Gruß, Frankx

                Hallo Frankx,

                wenn du mein OP genau gelesen hättest, wüsstest du, dass eine Mail bei mir ankommt, die allen gewünschten Text enthält, außer den beiden Variablen.
                Dass ich also die Mailfunktion drin habe, versteht sich von selbst.

                Mir ging es darum, die Seltsamkeit darzustellen, wie ein und dieselbe Textzeile als echo "" ausgegeben funktioniert und als mail() verschickt nicht funktioniert.

                Und da dieses Problem weiterhin besteht, würde ich mich über Tipps und Ideen freuen. Dir trotzdem lieben Dank für deine Antworten zu später Stunde!

                Schnes Wochenende und Gruß -
                Sebastian

  2. Hi,

    $mail_body.="http://www.domain.de/pruefung.php?id=" . $id . "&nr=" . $nr;

    Welche Codierung gilt für den Mail-Body?

    Bei irgendeiner Mail-Codierung werden Sonderzeichen mit Istgleich + 2 Hexziffern dargestellt - ein echtes = dann als =3D.
    Vielleicht haut Dir das ja die Parameter kaputt.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hallo Selfer,

    durch Ausprobieren auf gut Glück konnte ich das Kuriosum beheben. Nur leider verstehe ich nicht, warum es nun geht und vorher nicht ging.

    Nochmal kurz zur Erinnerung: Eine dynamisch erstellte URL mit zwei Zahlen als Parameter, so im PHP-Code dargestellt

    $mail_body.="http://www.domain.de/pruefung.php?id=" . $id . "&nr=" . $nr;

    kam ohne die Parameter an, nämlich so:

    http://www.domain.de/pruefung.php?id=&nr=

    Das gleiche per echo ausgegeben, enthielt die Parameter:

    http://www.domain.de/pruefung.php?id=2&nr=3

    Nun habe ich jeweils zwei Unterstriche in die URL vor die Parameter eingefügt:
      $mail_body.="http://www.domain.de/pruefung.php?id=__" . $id . "&nr=__" . $nr;

    Und siehe da, es erscheinen in der Mail die korrekten Parameter _ohne_ die Unterstriche:
      http://www.domain.de/pruefung.php?id=2&nr=3

    Funktioniert bei ein-, zwei- und dreistelligen Zahlen. Die gleiche URL probehalber per echo ausgegeben, enthält nun wiederum die Unterstriche (was egal ist, weil es mir ja auf die Mail ankam):
      http://www.domain.de/pruefung.php?id=__2&nr__=3

    Im Grunde könnte ich ja jetzt zufrieden sein, denn es funktioniert nun so, wie ich es brauche. Aber ich möchte gerne _vesretehen_, warum es so klappt und anders nicht geklappt hat und warum mail() anders reagiert als echo"".

    Wenn mir da jemand auf die Sprünge helfen könnte, wäre das Klasse!

    Schönes Rest-Wochenende noch -
    Sebastian