Schröder: php-Datei in HTML

Hallo zusammen,

wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

Besten Dank Gruß Detef

  1. Hallo,

    wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

    ich verstehe nicht, was du konkret meinst.
    Kannst du das etwas genauer beschreiben?

    Live long and pros healthy,
     Martin

    --
    Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
  2. Hallo Detlef,

    wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

    Du kannst Seitenkopf, deine Navigation und evtl. auch den footer mit PHP-Includes auslagern. Hier findest du ein Tutorial: PHP/Tutorials/Templates

    Vorher wäre das (zumindest das erste Kapitel) ganz gut: PHP/Tutorials/Einstieg

    ich verstehe nicht, was du konkret meinst.

    ausgelagerte php-Datei → include()

    Herzliche Grüße

    Matthias Scharwies

    --
    Einfach mal was von der ToDo-Liste auf die Was-Solls-Liste setzen.“
    1. Hi,

      wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

      ich verstehe nicht, was du konkret meinst.

      ausgelagerte php-Datei → include()

      wahrscheinlich habt ihr es richtig verstanden, so hatte ich es auch vermutet.
      Aber das wäre ja eben nicht "eine ausgelagerte php-Datei", sondern genau andersrum (was Rolf auch sehr schön beschreibt). Deswegen habe ich gezweifelt, ob nicht doch eine normale Verlinkung oder sowas gemeint war.

      Live long and pros healthy,
       Martin

      --
      Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
      1. Servus!

        Hi,

        wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

        ich verstehe nicht, was du konkret meinst.

        ausgelagerte php-Datei → include()

        wahrscheinlich habt ihr es richtig verstanden, so hatte ich es auch vermutet.
        Aber das wäre ja eben nicht "eine ausgelagerte php-Datei", sondern genau andersrum (was Rolf auch sehr schön beschreibt). Deswegen habe ich gezweifelt, ob nicht doch eine normale Verlinkung oder sowas gemeint war.

        Gestern hatten wir überlegt, wie man XML in HTML überträgt und dann PHP oder ein CMS empfohlen.

        Heute kommt eine Frage zu PHP. So habe ich auch angefangen: die Navigation in PHP-Templates auszulagern und dann nur die Endungen meiner HTML-Webseiten in .php umzubenennen. Den Sprung, dass die dann ja php-Dokumente waren, habe ich erst später nachvollzogen.

        Herzliche Grüße

        Matthias Scharwies

        --
        Einfach mal was von der ToDo-Liste auf die Was-Solls-Liste setzen.“
    2. besten Dank.

      Ich habe die Frage nur deshalb gestellt, weil ich der Auffasung war, dass der Browser nur Dateien mit der Endung .html versteht. Habe diese umbenannt und es ging. Das wusste ich nicht. Somit vestehe ich auch die Links, die Du genannt hast, diese hatten mich zuvor aufgrund meiner Meinung verwirrt.

      Also nochmals besten Dank.

      Gruß Detlef

      1. Hallo Schröder,

        dass der Browser nur Dateien mit der Endung .html versteht.

        Dem Browser ist die Endung zumeist total egal. Er interessiert sich viel mehr für den Content-Type, den ihm der Server per HTTP Header liefert.

        Wenn der text/html ist, wird der gelieferte Inhalt als HTML Datei interpretiert. Wenn die Datei "welcome.html" heißt, der Server aber den Content-Type "image/png" liefert und ein Bild liefert, dann zeigt der Browser dieses Bild.

        Der Browser könnte sich für die Endung interessieren, wenn der Server keinen Content-Type liefert. Das ist zum Beispiel der Fall, wenn man auf dem lokalen Dateisystem unterwegs ist (file:///...). Wenn eine http-Anfrage keinen Content-Type liefert, ist man der Gnade des Browsers überlassen, was dann passiert. Oder, wie es RFC7231 in der typischen IETF-Formulierung sagt:

        A sender that generates a message containing a payload body SHOULD generate a Content-Type header field in that message unless the intended media type of the enclosed representation is unknown to the sender. If a Content-Type header field is not present, the recipient MAY either assume a media type of "application/octet-stream" or examine the data to determine its type.

        Der Server sollte (muss aber nicht) und der Empfänger könnte (muss aber auch nicht). Interessanterweise steht da aber nicht, dass der Empfänger den URI analysieren kann (sprich: Dateiname suchen und Endung finden). Er kann den Inhalt analysieren. Meine Erfahrung ist aber, dass zumindest bei Zugriffen auf's lokale Dateisystem die Endung gedeutet wird. Eine .html-Datei, die ich in .txt umbenenne, wird als einfacher Text angezeigt.

        Auf dem Server sieht das anders aus. Der ist ja die entscheidene Instanz für den Content-Type, und dort kann man definieren, dass *.html mit Content-Type text/html auszuliefern ist. Bei einer PHP Datei ist das anders. Da wird nicht der Webserver gefragt, sondern PHP. Es generiert meines Wissens automatisch text/html als Content-Type, es sei denn, du setzt explizit einen anderen Content-Type.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf,

          Der Browser könnte sich für die Endung interessieren, wenn der Server keinen Content-Type liefert. Das ist zum Beispiel der Fall, wenn man auf dem lokalen Dateisystem unterwegs ist (file:///...).

          vermutlich ist das so, ich hab's aber schon lange nicht mehr ausprobiert. Es gab allerdings vor vielen Jahren mal IrgendEinen sehr verbreiteten Browser, der selbst bei HTTP-Ressourcen den Content-Type als sekundäre Information betrachtet und sich stattdessen erstmal den Inhalt angesehen hat. Kam da zum Beispiel ein Dokument mit dem Content-Type text/plain, das aber irgendwo in den ersten paar Zeichen "<html" enthielt, hat er das Dokument trotzdem als HTML geparst und dargestellt.

          Diesem Browser haben wir es auch zu verdanken, dass bis heute noch viele Webautoren PDFs oder auch Videos in ein Archiv verpacken (auch wenn die Kompression bei diesen Medientypen wenig bis gar keinen Nutzen bringt), nur weil sie "von damals" noch wussten, dass der Browser (IE) das Dokument sonst anzuzeigen versucht, anstatt zu speichern.

          Der Server sollte (muss aber nicht) und der Empfänger könnte (muss aber auch nicht). Interessanterweise steht da aber nicht, dass der Empfänger den URI analysieren kann (sprich: Dateiname suchen und Endung finden). Er kann den Inhalt analysieren. Meine Erfahrung ist aber, dass zumindest bei Zugriffen auf's lokale Dateisystem die Endung gedeutet wird. Eine .html-Datei, die ich in .txt umbenenne, wird als einfacher Text angezeigt.

          Teils, teils. Linux führt den Content-Type auch im Dateisystem als Metainformation mit bzw. bestimmt ihn anhand verschiedener Kriterien, darunter die Namensendung, aber auch bestimmte charakteristische Inhalte (magic numbers).

          Wenn ich auf meinem Rechner eine leere Datei anlege und sie demo.mp4 nenne, dann zeigt mein Dateimanager als Mime-Typ text/plain an. Von der Endung her müsste es eigentlich ein Video sein, Linux kann das aber nicht am Header oder an markanten Bytefolgen verifizieren und fällt daher auf einen unverfänglichen Typ zurück.
          Windows richtet sich dagegen ausschließlich nach der Endung und zeigt auch eine 0-Byte-Datei als Videodatei an, wenn sie auf .mp4 endet.

          [PHP] generiert meines Wissens automatisch text/html als Content-Type, es sei denn, du setzt explizit einen anderen Content-Type.

          Korrekt.

          Live long and pros healthy,
           Martin

          --
          Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
  3. Hallo Schröder,

    wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

    Wie baue ich ein Auto in meinen Motor ein?

    Andersrum wird ein Schuh Fahrzeug draus.

    Du kannst HTML und PHP in PHP einbinden. Heißt: Du musst eine PHP Datei ausliefern, damit der PHP Prozessor läuft, und kannst darin Includes machen.

    Dabei kannst Du ausnutzen, dass PHP den Dateiinhalt 1:1 kopiert, so lange keine <?php ?> bzw. <?= ?> Tags gesetzt werden. D.h. Du nimmst deine ganz normale HTML Datei, benennst sie in PHP um und an der Stelle, wo Du etwas einbetten willst, schmeißt Du mit <?php include ... ?> den PHP Modus an.

    Wenn Du lediglich statische Inhalte einbinden willst, gibt es zu PHP auch noch eine Alternative: Server Side Includes, die muss der Hoster allerdings erlauben, bzw. du musst in der Webserver-Konfiguration ggf. einschalten, dass .shmtl Dateien auf SSI-Direktiven geparsed werden.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      besten Dank für Deinen kreativen und humorvollen Beitrag.

      Gruß Detlef

  4. Hallo Du Einer,

    wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

    Das geht überall dort, wo zusätzliche Sourcen geladen werden dürfen. Sekundärrequest

    Also zB. im src-Attribut von Images, in Link-Ressourcen wie zB CSS.

    Der MIME-Type der externen Ressource muss dann zum Ziel passen und kann in der PHP-Datei mittels header('Content-Type: ◇◇◇') gesetzt werden.

    Wenn man nur eine serverseitige Aktion ausführen lassen will, kann man auch ein Blindimage oder eine Dummy-CSS- oder -JS-Datei einbinden.

    LG
    Ralf

    1. Hallo Ralf,

      wie rufe ich in einem HTML-Code eine ausgelagerte php-Datei auf?

      Das geht überall dort, wo zusätzliche Sourcen geladen werden dürfen. Sekundärrequest

      Also zB. im src-Attribut von Images, in Link-Ressourcen wid zB CSS.

      offensichtlich hast du dich durch die unglückliche Formulierung genauso in die Irre führen lassen wie ich.

      Gemeint war's wohl genau umgekehrt: Wie binde ich ausgelagerte Inhalte in eine PHP-Datei ein?

      Wenn man nur eine serverseitige Aktion ausführen lassen will, kann man auch ein Blindimagd oder eine Dummy-CSS- oder -JS-Datei einbinden.

      Was für eine serverseitige Aktion hast du da im Visier? Oder meinst du ganz allgemein, man solle das PHP-Script einfach als Bild- oder CSS-Ressource tarnen? - Dann sollte es aber auch zumindest eine minimalistische, aber gültige Ressource des erwarteten Typs liefern. Oder mit Status 204 No Content antworten.

      Live long and pros healthy,
       Martin

      --
      Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.