Markus: Code in ausgeführter HTML-Datei sichtbar

Hallo zusammen,

ich möchte mit Hilfe von PHP Formulardaten an eine e-mailadresse schicken. Da ich mich mit php noch nicht auskenne, habe ich einen fertigen Formmailer von self-html benutzt:
http://aktuell.de.selfhtml.org/artikel/php/form-mail/

Wenn ich diesen Quellcode als html-Datei speichere, wird mir beim Ausführen der Datei (nur im ff beim ie nicht) ein Teil des Codes am oberen Bildschirmrand angezeigt.
Kann es daran liegen, dass die Datei auf meinem lokalen Rechner und nicht auf einem Server liegt?

Markus

  1. ich möchte mit Hilfe von PHP Formulardaten an eine e-mailadresse schicken.

    Wenn ich diesen Quellcode als html-Datei speichere, wird mir beim Ausführen der Datei (nur im ff beim ie nicht) ein Teil des Codes am oberen Bildschirmrand angezeigt.

    Was meinst du mit "ein Teil"? Wenn es sich bei diesem Teil um den gesamten PHP-Codeblock handelt (alles zwischen <?php und ?>, dann führt dein Server den Code nicht aus, sondern liefert die Datei so, wie sie ist, an den Browser. Das wird daran liegen, dass er die Datei nicht als PHP-Skript erkennt (dazu dient üblicherweise die Endung .php) oder dass er sogar überhaupt kein PHP kann.

    1. Hello Gonzo,

      Was meinst du mit "ein Teil"? Wenn es sich bei diesem Teil um den gesamten PHP-Codeblock handelt (alles zwischen <?php und ?>, dann führt dein Server den Code nicht aus, sondern liefert die Datei so, wie sie ist, an den Browser. Das wird daran liegen, dass er die Datei nicht als PHP-Skript erkennt (dazu dient üblicherweise die Endung .php) oder dass er sogar überhaupt kein PHP kann.

      Markus hatte doch geschreiben, dass er den Code als HTML-Datei auf seinem Client speichert.
      Ich gehe davon aus, dass er es auch genau so gemeint hat.

      Nun würde mich allerdings auch interessieren, welcher Teil beim FF da angezeigt wird.
      Das kann eigentlich nur damit zusammenhängen, dass irgendwo ein Zeichen fehlt oder zuviel ist oder Markus z.B. seine eigenen Angaben (unvollständig quotetd) eingesetzt hat.

      @Markus

      Es handelt sich hier um einen "Form-Mailer", der ein aktives Element auf einem Webserver benötigt.
      Mit dem Formular im Browser werden die Daten erfasst und als Parameter eines Requests an den Server geschickt. Der verarbeitet diese dann und übergibt dem eMail-Programm oder einem vorgeschalteten Script die Daten. Dieses Programm (MTA = Mail Transfer Agent) versendet sie dann an den Empfänger.

      Wenn Du keinen aktiven Webserver zur Verfügung hast, also so einen, der ihm per HTTP zugesandte Daten auswertet und verarbeitet, dann kannst Du die Datan aus dem Formular im Browser eigentlich nur direkt an einen Mailserver senden. Dies geschoeht dann über den Umweg deines Standard-Mail-Clients (z.B. Outlook Express). Diese Methode ist aber unsicher, da nicht sichergestellt ist, dass auf dem jeweiligen Client auch die Kommunikation zwischen Browser und Standard-Mail-Client funktioniert und ob überhaupt ein Mailaccount eingerichtet ist, über den dieser Standard-Mail-Client dann die eMail versenden kann.

      Liebe Grüße

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      1. Vielen Dank an alle für eure schnellen Antworten und die guten Tipps.

        Wünsch euch noch schöne Osterfeiertage.

        Markus

      2. Nun würde mich allerdings auch interessieren, welcher Teil beim FF da angezeigt wird.
        Das kann eigentlich nur damit zusammenhängen, dass irgendwo ein Zeichen fehlt oder zuviel ist

        Sieht so aus, als ob der Fehler in dieser Zeile liegt, der angezeigte Text beginnt auch nach der Zeile:

        $strFrom       = '"Formmailer" IhrAndererName@provider.xy';

        Wenn ich den hinteren Teil entferne ist soweit alles ok:

        $strFrom       = '"Formmailer"';

        Markus

        1. Hello,

          Nun würde mich allerdings auch interessieren, welcher Teil beim FF da angezeigt wird.
          Das kann eigentlich nur damit zusammenhängen, dass irgendwo ein Zeichen fehlt oder zuviel ist

          Sieht so aus, als ob der Fehler in dieser Zeile liegt, der angezeigte Text beginnt auch nach der Zeile:

          $strFrom       = '"Formmailer" IhrAndererName@provider.xy';

          Wenn ich den hinteren Teil entferne ist soweit alles ok:

          $strFrom       = '"Formmailer"';

          Das ist jetzt eine interesante Betrachtung.
          Normalerweise würde dieser Code ja gar nicht zum Client gelangen, da er vom PHP-Parser "rausgeschnitten" und ausgewertet würde. Nur das Ergebnis des Parserlaufs wird an derselben Stelle dann wieder eingestanzt und zum Client geschickt.

          Nun ist PHP aber als embedded Code designed und der Browser sollte den gesamten trotzdem ausgelieferten PHP-Code eigentlich ignorieren. Wenn dann aber HTML-eigene Zeichen in diesem Code enthalten sind, kann es kritisch werden.

          Allerdings befinden sich die HTML-eigenen Zeichen erstens innerhalb des PHP-Tags und zweitens sind sie quoted.

          Bin gespannt, was die Anderen Selfer dazu sagen.

          Liebe Grüße

          Tom vom Berg

          --
          Nur selber lernen macht schlau
    2. Hi Gonzo,

      vermutlich wird es der gesamte php-Block sein der sichtbar ist, der wegen padding/margin Angaben nur teilweise erscheint.
      Ich kann doch php in eine html-datei einbinden <?php ... ?> wie css oder js?
      Kann ich davon ausgehen, wenn ich die Datei auf einen Webserver stelle (falls der Code ok ist), dann fehlerfrei - also ohne sichtbaren Code -ausgeführt wird?

      Leider kann ich nicht experimentieren, da es gleich laufen sollte, wenn ich es ins Netz stelle.

      Markus

      1. Hello,

        vermutlich wird es der gesamte php-Block sein der sichtbar ist, der wegen padding/margin Angaben nur teilweise erscheint.
        Ich kann doch php in eine html-datei einbinden <?php ... ?> wie css oder js?

        Der PHP-Code dürfte vom Browser auch nicht angezeigt werden, da die Grundregel lautet, dass Unbekannte  Tags nebst Inhalt unterdrückt werden.

        Da fällt mit ein, dass der PHP-Tag doch in Zukunft eigentlich so notiert werden müsste *gg*

        <?php  /* irgendwas */ />

        Liebe Grüße

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        1. Hallo,

          Da fällt mit ein, dass der PHP-Tag doch in Zukunft eigentlich so notiert werden müsste *gg*

          <?php  /* irgendwas */ />

          Nö, PHP ist ein Präprozessor, genau wie:

          <?xml version="1.0" … ?>

          mfg. Daniel

      2. vermutlich wird es der gesamte php-Block sein der sichtbar ist, der wegen padding/margin Angaben nur teilweise erscheint.

        Nicht auf das verlassen, was der Browser als Webseite anzeigt, benutze die Quellcodeansicht.

        Ich kann doch php in eine html-datei einbinden <?php ... ?> wie css oder js?

        Jein. Eine HTML-Datei mit PHP-Code ist genau genommen keine HTML-Datei, sondern ein Skript, also ein Programm, in dem sich auch HTML-Code befindet. Die Einbindung, von der du sprichst, läuft also eigentlich andersherum: Die HTML-Teile, die sich scheinbar außen befinden, sind eigentlich in den PHP-Code, der scheinbar innerhalb des HTML-Codes steckt, eingebettet - die Verschachtelung ist genau andersrum als der Block <?php … ?> Glauben macht.

        Du hast es bei einem PHP-Skript also mit einem Programm zu tun, in dem man praktischerweise Text ausgeben kann, indem man ihn mit ?> beginnt (!) und <?php beendet (!). Ist auf den ersten Blick vielleicht verwirrend.

        Kann ich davon ausgehen, wenn ich die Datei auf einen Webserver stelle (falls der Code ok ist), dann fehlerfrei - also ohne sichtbaren Code -ausgeführt wird?

        Davon könntest du ausgehen, allerdings nur, weil ich vermute, dass Code, der in SELFHTML veröffentlicht wurde, korrekt ist.

        Leider kann ich nicht experimentieren, da es gleich laufen sollte, wenn ich es ins Netz stelle.

        Stell' die Datei doch zum Ausprobieren unter einem anderen Namen ins Netz, meinetwegen test.php.

  2. Hallo Markus,

    Wenn ich diesen Quellcode als html-Datei speichere, wird mir beim Ausführen der Datei (nur im ff beim ie nicht) ein Teil des Codes am oberen Bildschirmrand angezeigt.
    Kann es daran liegen, dass die Datei auf meinem lokalen Rechner und nicht auf einem Server liegt?

    der von Dir angeführte Formmailer ist ein Beispiel für serverseitig ausgeführten Code. Ja, Du benötigst dafür einen Webserver mit PHP-Unterstützung. Zum Lernen eignet sich aufgrund der einfachen Installation XAMPP.

    Freundliche Grüße

    Vinzenz

    1. Hello,

      der von Dir angeführte Formmailer ist ein Beispiel für serverseitig ausgeführten Code. Ja, Du benötigst dafür einen Webserver mit PHP-Unterstützung. Zum Lernen eignet sich aufgrund der einfachen Installation XAMPP.

      Die nächste Frage ist doch schon vorprogrammiert:

      Mein XAMMP versendet die Mail nicht... was muss ich tun?

      Liebe Grüße

      Tom vom Berg

      --
      Nur selber lernen macht schlau