Jürgen Linder: PHP in HTML

hi Leute, ich habe ein Problem und weiss nicht mehr weiter. Vielleicht kann mir jemand helfen? Ich möchte ein PHP Script ais HTML aufrufen. Dies mache ich mit dem Befehl:

<form name="form21" method="post" action="myFormMail.php">

Das File myFormMail.php enthält eigemtlich nur ein echo:

<body>
  <?php
    echo("<center>P H P</center>");
  ?>
</body>

Apache Dienst 2.4 ist gestartet.
Dann kommt aber:
"Möchten Sie myFormMail.php öffnen oder speichern?" mit den entspechenden Buttons.

Wenn ich das File myFormMail.php als myFormMail.html aufrufe dan erscheint auf dem Bildschirm:
P H P"); ?>

Was mache ich falsch?

Danke für Eure Hilfe.

Gruß Jürgen
Ihr könnt mir auch schreiben: juergen.linder@gmx.de

  1. Hi,

    <body> <?php echo("<center>P H P</center>"); ?> </body> Apache Dienst 2.4 ist gestartet. Dann kommt aber: "Möchten Sie myFormMail.php öffnen oder speichern?" mit den entspechenden Buttons.

    welcher Content-Type-Header wird geliefert? Vermutlich nicht text/html ...

    cu,
    Andreas a/k/a MudGuard

  2. Tach!

    Apache Dienst 2.4 ist gestartet. Dann kommt aber: "Möchten Sie myFormMail.php öffnen oder speichern?" mit den entspechenden Buttons.

    Ist da auch PHP im Apachen installiert und richtig konfiguriert? Wende dich an deinen Systemadministrator, dass der das kontrolliert und gegebenenfalls repariert/einrichtet.

    dedlfix.

  3. Morgen,

    <form name="form21" method="post" action="myFormMail.php">
    
    <body>
       <?php
          echo("<center>P H P</center>");
       ?>
    </body>
    

    müsste es nicht im myFormMail.php heißen:

    echo "<body><center>P H P</center></body>";
    

    und eingebunden würde das doch so:

    <?php include('myFormMail.php')?>
    

    Wenn man per <form> method="post" </form> ein dokument.php einbindet heisst das ja noch nicht das, das dokument.php irgendetwas getan hat, sondern nur das du diesem Werte schicken kannst mit denen es etwas tun kann. Somit sollte in dem Fall auch keine Ausgabe von myFormMail.php in deinem html Dokument erscheinen. Zudem beginnt dein php code erst vor dem echo, sprich das body element erkennt php garnicht (als html schon).

    Gruß

    Jo

    1. Moin!

      Morgen,

      <form name="form21" method="post" action="myFormMail.php">
      
      <body>
         <?php
            echo("<center>P H P</center>");
         ?>
      </body>
      

      müsste es nicht im myFormMail.php heißen:

      echo "<body><center>P H P</center></body>";
      

      Nein, muss nicht. HTML und PHP zu mischen ist möglich.

      und eingebunden würde das doch so:

      <?php include('myFormMail.php')?>
      

      Nein, auch nicht zwingend. Von einem Formular aus ein PHP-Skript aufrufen, welches die Formulardaten entgegennimmt, funktioniert wie in der Frage beschrieben.

      Wenn man per <form> method="post" </form> ein dokument.php einbindet heisst das ja noch nicht das, das dokument.php irgendetwas getan hat, sondern nur das du diesem Werte schicken kannst mit denen es etwas tun kann.

      So soll das ja auch sein.

      Somit sollte in dem Fall auch keine Ausgabe von myFormMail.php in deinem html Dokument erscheinen.

      Wenn man das Formular abschickt, schon.

      Zudem beginnt dein php code erst vor dem echo, sprich das body element erkennt php garnicht (als html schon).

      HTML-Seiten, die keinerlei PHP-Code enthalten, aber aufgrund der Dateiendung ".php" durch den PHP-Interpreter laufen, sind vollwertige PHP-Skripte.

      Grüße Sven

      1. Moin!

        <form name="form21" method="post" action="myFormMail.php">
        
        <body>
           <?php
              echo("<center>P H P</center>");
           ?>
        </body>
        

        müsste es nicht im myFormMail.php heißen:

        echo "<body><center>P H P</center></body>";
        

        Nein, muss nicht. HTML und PHP zu mischen ist möglich.

        Natürlich ist das möglich, mach ich ja auch die ganze Zeit. Da stehen ja auch nur die Body Elemente mit im echo. Die ausgabe verändert sich ja nicht, sieht nur richtiger aus finde ich, da ja <body> nicht zu php gehört.

        und eingebunden würde das doch so:

        <?php include('myFormMail.php')?>
        

        Nein, auch nicht zwingend. Von einem Formular aus ein PHP-Skript aufrufen, welches die Formulardaten entgegennimmt, funktioniert wie in der Frage beschrieben.

        Ja aber er schickt ja keine Daten an das Formular. Dementsprechend find ich das hier überflüssig, außer er will die Ausgabe des echos haben wenn die Variablen die er (noch nicht ge)schickt (hat) leer sind.

        Wenn man per <form> method="post" </form> ein dokument.php einbindet heisst das ja noch nicht das, das dokument.php irgendetwas getan hat, sondern nur das du diesem Werte schicken kannst mit denen es etwas tun kann.

        So soll das ja auch sein.

        Sag ich ja. Obwohl kleiner Zusatz in der nächsten Antwort.

        Somit sollte in dem Fall auch keine Ausgabe von myFormMail.php in deinem html Dokument erscheinen.

        Wenn man das Formular abschickt, schon.

        Wie mir eben aufgefallen ist, tut das Formular doch schon was auch wenn es nocht nicht abgeschickt wurde. Nämlich zu dem Zeitpunkt wo es durch das laden des html Dokumentes eingebunden wird und die zu schickenden Variablen noch leer sind.

        Zudem beginnt dein php code erst vor dem echo, sprich das body element erkennt php garnicht (als html schon).

        HTML-Seiten, die keinerlei PHP-Code enthalten, aber aufgrund der Dateiendung ".php" durch den PHP-Interpreter laufen, sind vollwertige PHP-Skripte.

        Ja dem kann ich nur zustimmen, wundere mich eigentlich nur warum der html code trotzdem von Browsern ohne entsprechende Einleitung erkannt wird. Macht für mich irgendwie keinen Sinn wenn man einem .html dokument sagen muss was php oder js code ist aber in einem .php Dokument nicht sagen muss was html code ist.

        Gruß Jo

        1. Hallo,

          wundere mich eigentlich nur warum der html code trotzdem von Browsern ohne entsprechende Einleitung erkannt wird.

          warum sollte er nicht, wenn der entsprechende Content-Type (text/html) gesendet wird?

          Sei dir bitte darüber im Klaren, dass PHP auch keine Magie ins Spiel bringt - jedenfalls nicht hier. Es ist eine Scriptsprache, die eine Eingabedatei verarbeitet und dabei eine Ausgabe an stdout erzeugt, die der Webserver an den Client sendet. Vom Client aus ist dieser Mechanismus nicht vom Abfragen einer statischen HTML-Datei unterscheidbar.

          Macht für mich irgendwie keinen Sinn wenn man einem .html dokument sagen muss was php oder js code ist aber in einem .php Dokument nicht sagen muss was html code ist.

          PHP kennt zwei Modi beim Parsen eines Dokuments: (A) den Inhalt der Scriptdatei einfach nur durchreichen, und (B) den Inhalt der Scriptdatei interpretieren und die Ausgabe weiterreichen. Es ist nun mal festgelegt, dass PHP am Scriptanfang immer in Modus (A) beginnt. Was immer im Script steht, wird also 1:1 durchgereicht. Ob das HTML, JS, CSS, XML, JSON oder sogar eine reine Binärwurst ist (z.B. Bilddaten), kümmert den PHP-Interpreter nicht. Wichtig ist an der Stelle, dass der zum Inhalt passende Content-Type gesendet wird, und der ist bei PHP im Web-Umfeld normalerweise auf text/html voreingestellt, weil das wohl der häufigste Fall ist.

          So long,
           Martin

          1. Morgen,

            wundere mich eigentlich nur warum der html code trotzdem von Browsern ohne entsprechende Einleitung erkannt wird.

            warum sollte er nicht, wenn der entsprechende Content-Type (text/html) gesendet wird?

            Sei dir bitte darüber im Klaren, dass PHP auch keine Magie ins Spiel bringt - jedenfalls nicht hier. Es ist eine Scriptsprache, die eine Eingabedatei verarbeitet und dabei eine Ausgabe an stdout erzeugt, die der Webserver an den Client sendet. Vom Client aus ist dieser Mechanismus nicht vom Abfragen einer statischen HTML-Datei unterscheidbar.

            Macht für mich irgendwie keinen Sinn wenn man einem .html dokument sagen muss was php oder js code ist aber in einem .php Dokument nicht sagen muss was html code ist.

            PHP kennt zwei Modi beim Parsen eines Dokuments: (A) den Inhalt der Scriptdatei einfach nur durchreichen, und (B) den Inhalt der Scriptdatei interpretieren und die Ausgabe weiterreichen. Es ist nun mal festgelegt, dass PHP am Scriptanfang immer in Modus (A) beginnt. Was immer im Script steht, wird also 1:1 durchgereicht. Ob das HTML, JS, CSS, XML, JSON oder sogar eine reine Binärwurst ist (z.B. Bilddaten), kümmert den PHP-Interpreter nicht. Wichtig ist an der Stelle, dass der zum Inhalt passende Content-Type gesendet wird, und der ist bei PHP im Web-Umfeld normalerweise auf text/html voreingestellt, weil das wohl der häufigste Fall ist.

            Ach, nadann ist ja alles gut :)

            Gruß Jo