anno2007: CMS: PHP-Befehle in HTML ausführen

Hallo,

ich will mir nen CMS programmieren. Nun bin ich auf ein Problem gestoßen: Ich habe eine alle HTML-Inhalte der alten PHP-Dateien in eine MySQL kopiert. Das CMS läd die Inhalt super, jedoch wenn ich in einen PHP-Befehl asuführen will, welcher im HTML-Bereich steht, macht er das nicht, sondern schreib den Befehl in den Browser.

Beispiel MySQL:
-------------------
 <table <?php print $table_metas ?>>
-------------------

Sollte nun eigentlich dann folgendes im Browser stehen:
-------------------
 <table class="test">
-------------------

Stattdessen steht im Browser:
-------------------
 <table <?php print $table_metas ?>>
-------------------

Wie kann ich das lösen?

Gruß
anno2007

  1. Hello,

    ich will mir nen CMS programmieren. Nun bin ich auf ein Problem gestoßen: Ich habe eine alle HTML-Inhalte der alten PHP-Dateien in eine MySQL kopiert. Das CMS läd die Inhalt super, jedoch wenn ich in einen PHP-Befehl asuführen will, welcher im HTML-Bereich steht, macht er das nicht, sondern schreib den Befehl in den Browser.

    Wie kann ich das lösen?

    Um welches CMS-System handelt es sich?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hallo Tom,

      Um welches CMS-System handelt es sich?

      Mein eigenes. Selber programmiert.

      Gruß
      anno2007

      1. Hello,

        Um welches CMS-System handelt es sich?

        Mein eigenes. Selber programmiert.

        das hat mich eben verwirrt.
        Du schreibst, dass Du ein CMS baust,
        dann von vorhandenen Seiten und dann, dass das CMS sie anstandslos lädt.
        Da hatte ich angenommen, dass Du ein vorhandenes CMS umbaust...

        Beschreibe doch bitte, was Du unter

        "Das CMS läd die Inhalt super"

        verstehst.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hallo Tom,

          Beschreibe doch bitte, was Du unter

          "Das CMS läd die Inhalt super"

          verstehst.

          Ich meinte das CMS liest aus der MySQL den Inhalt der angeforderten Seite vom User. Der Inhalt befindet sich zuerst in einer Variable mit PHP- und HTML-Befehlen und wird dann in mein HTML-Grundgerüst geschrieben und an den Browser gesendet. Da fängt das Problem an: Es wird dann wie schon im 1. Post geschrieben so vom PHP-Interpreter ausgegeben, als hätte ich kein PHP. Also steht dann im Browser die HTML-Befehle und die PHP. Die PHP-Befehle im Script selber werden ausgefürt (lese DB, lade inhalte und noch anderes).

          Beispiel im Browser:
          -------------------
           <table <?php print $table_metas ?>>
          -------------------

          Gruß
          anno2007

          1. Also steht dann im Browser die HTML-Befehle und die PHP. Die PHP-Befehle im Script selber werden ausgefürt (lese DB, lade inhalte und noch anderes).

            Beispiel im Browser:

            <table <?php print $table_metas ?>>

            a) du hast php beleidigt, versuchs mal mit einem strichpunkt am ende der  "zeile" - sollte zwar normalerweise klappen, ist aber nicht ganz korrekt

            <?php print $table_metas; ?> oder wenn schon ohne strichpunkt, dann in kurzschreibweise <?=$table_metas?>

            b) wenn du den kompletten befehl als variable ausgibts, ignoriert der parser das ganze

            du kannst zb auch kein txt file mit php-befehlen inkludieren, da diese vom server als txt interpretiert und nicht geparsed werden - damit der parser korrekt drueberlaeuft, muss das ganze auch durch den parser laufen

            wenn du also sagst

            $foo =  "<table <?php print $table_metas ?>>";
            echo $foo;

            dann bekommst du genau das als string ausgegeben ausgegeben

            in so einem fall musst du zb

            $foo =  "<table " . $table_metas . ">";
            echo $foo;

            machen

            ---
            btw: wenn ich jetzt am kern deines problems vorbeigeschossen hab, tut es mir leid - aber anhand deiner informationen laesst sich das problem nicht so genau eingrenzen

            hoert sich an wie das patente "druckt nicht"-problem von ibm

            1. Hallo Suit,

              Also steht dann im Browser die HTML-Befehle und die PHP. Die PHP-Befehle im Script selber werden ausgefürt (lese DB, lade inhalte und noch anderes).

              Genau richtig.

              a) du hast php beleidigt, versuchs mal mit einem strichpunkt am ende der  "zeile" - sollte zwar normalerweise klappen, ist aber nicht ganz korrekt

              <?php print $table_metas; ?> oder wenn schon ohne strichpunkt, dann in kurzschreibweise <?=$table_metas?>

              ich habe es mal mit einem strichpunkt probiert. Klappt trotzdem net.

              b) wenn du den kompletten befehl als variable ausgibts, ignoriert der parser das ganze

              Was meisnt du mit 'kompletten befehl als variable ausgibts'?

              $foo =  "<table " . $table_metas . ">";
              echo $foo;

              Klappt auch net.

              Gruß
              anno2007

              1. Was meisnt du mit 'kompletten befehl als variable ausgibts'?

                soweit ich verstanden habe, hast du eine tabelle in der datenbank wo seiteninhalte gespeichert sind

                das feld in dieser tabelle hat zb folgend inhalt
                <b>ich bin ein fetter text udn die überschrift</b><p>hier kommt ein absatz</p><img src="<?php echo $ich_bin_eine_variable_die_ein_bild_einfuegt; ?>" /><p>noch ein absatz</p>

                und jetzt machst du folgendes:

                SELECT feld FROM tabelle WHERE inhalt = 'der obrige kaese'

                das speicherst du in deine variable "$mysqlausgabe" und gibst es aus

                ich bin das template
                <?php
                echo $mysqlausgabe;
                ?>
                hier geht das template weiter

                und dein problem ist nun, dass die in der datenbank vorhandenen "<?php echo $ich_bin_eine_variable_die_ein_bild_einfuegt; ?>" nicht vom parser interpretiert werden? und du im quelltext

                <b>ich bin ein fetter text udn die überschrift</b><p>hier kommt ein absatz</p><img src="<?php echo $ich_bin_eine_variable_die_ein_bild_einfuegt; ?>" /><p>noch ein absatz</p>

                anstatt

                <b>ich bin ein fetter text udn die überschrift</b><p>hier kommt ein absatz</p><img src="das_eingefuegte_bild.jpg" /><p>noch ein absatz</p>

                stehen hast?

                wenn das der fall ist: das ist klar, dass das so nicht geht - siehe meinen vorherigen post

                wenn das problem anders beschaffen ist, versorge uns mit informationen (code snippets, beispiele wie ein datenbank-eintrag aussieht) ein beispiellink oder sonstwas, dann kann man besser helfen

  2. Hallo dein Problem ist klar.
    Aus diesem Grund nutzen die meissten CMS
    eval

    Ich halte allerdings nichts von eval Funktionen, aber
    das ist Ansichtssache.

    Gruss
    Paul

    1. Hallo Paul,

      Hallo dein Problem ist klar.
      Aus diesem Grund nutzen die meissten CMS

      Ich glaube das Problem wurde nicht ganz verstanden. Meine HP läuft mit HTML und PHP in einer PHP-Datei zur Zeit problemlos. Ich will nur ein CMS, da ich, wenn ich eine neue Datei anlege nicht in jeder PHP-DAtei immer die Navi und so weiter ändern will.

      Mein Problem ist: Ich habe ein MySQL wo jetzt der HTML-Teil steht. Ist gibt bei mir aber manchmal HTML-Teile (Kontaktformular), wo im HTML-Teil auch PHP verwendet wird. Dieser Teil lauf, wenn es in einer normalen PHP-DAtei steht perfekt, nur beim auslesen aus der MySQL gibts Probleme. Dort werden die PHP-Befehle nicht beachtet und es wird gedacht es sei auch HTML.

      eval()

      eval() habe ich auch schon probiert. Geht aber nicht, da der HTML-Teil ja auch durch eval() läuft und eval() denkt er sei auch PHP und gibt nur Fehler aus.

      Gruß
      anno2007

      1. Hallo!

        Ich will nur ein CMS, da ich, wenn ich eine neue Datei anlege nicht in jeder PHP-DAtei immer die Navi und so weiter ändern will.

        Du kennst include? :) Ein CMS ist in deinem Fall überdimensioniert, wenn nur der Wunsch besteht, Quelltext auszulagern.

        ciao, ww

        --
        Ein japanisch-deutsches Gedicht
        sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
        1. Hallo wucher wichtel,

          Du kennst include? :) Ein CMS ist in deinem Fall überdimensioniert, wenn nur der Wunsch besteht, Quelltext auszulagern.

          Natürlich kenn ich include, was für ne Frage. Ich will einfach ein CMS programmieren, da ich zum einen Langeweile habe und zum anderen will ich meine HP ohne Extra-Editor, FTP, SSH,... immer bearbeiteten, sondern über mein CMS und einem Admin-Center mit Editor, PictUpload,... .

          Ich denke auch nicht nur an mich, sondern habe auch jetzt schon abnehmer für ein CMS, wenn es mal fertig ist/wird. Gegen Geld versteht sich.

          Das CMS wird mal so sein, dass ich meinen Abnehmern/Kunden eine Standart-version meines CMS geben, das sie sich selbst an ihre Bedürfnisse anpassen können und falls dies nicht reicht, werde ich für die invinduellen Bedürfnisse die Software um gewisse Teile/Funktionen erweitern.

          Ich will kein fertiges CMS.

          Gruß
          anno2007

          1. Ich denke auch nicht nur an mich, sondern habe auch jetzt schon abnehmer für ein CMS, wenn es mal fertig ist/wird. Gegen Geld versteht sich.

            als wenns davon nicht schon genug gäbe:
            typo3, dcms, phpnuke, dotnetnuke, bamboo, reddot, dragonfly, koobi, ariadne, imperia, contentpump - nur eine kleine aufzaehlung derer, mit denen ich zu tun hatte - mein eigenes nicht mitgerechnet (nein, das verkauf ich nicht, ist eine spezialkonstruktion) ;)

            1. Hello,

              Ich denke auch nicht nur an mich, sondern habe auch jetzt schon abnehmer für ein CMS, wenn es mal fertig ist/wird. Gegen Geld versteht sich.

              als wenns davon nicht schon genug gäbe:

              typo3, dcms, phpnuke, dotnetnuke, bamboo, reddot, dragonfly, koobi, ariadne, imperia, contentpump - nur eine kleine aufzaehlung derer, mit denen ich zu tun hatte - mein eigenes nicht mitgerechnet (nein, das verkauf ich nicht, ist eine spezialkonstruktion) ;)

              Sie haben alle ähnliche Macken. man weiß nicht, wer von wem wem abgeschrieben hat.
              Die Bedienung auch _ohne_ javscript angenehm zu machen, wäre mir ein Anliegen.

              Außerdem vermisse ich (meistens) die Erkenntnisse der Novell NDS

              Darüberhinaus sollte ein CMS heutzutage auch CRT enthalten.
              Was nütze es mir, wenn der Verkauf neue Telefonnummern erhält, und ich das dann in hunderten von Seiten händisch nachbessern muss, oder Frau Müller-Busch ab nächsten Monat nicht mehr für daw Unternehmen tätig ist, ihr eMail-Name aber trotzdem noch auf dreißig Seiten erscheint.

              Dabei sind nicht nur die öffentlichen Seiten zu berücksichtigen, sondern auch die innerbetrieblichen. Und das können in gut organisierten Betrieben hindertmal mehr sein, als die externen...

              Harzliche Grüße vom Berg
              http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau

              1. Moin!

                typo3, dcms, phpnuke, dotnetnuke, bamboo, reddot, dragonfly, koobi, ariadne, imperia, contentpump - nur eine kleine aufzaehlung derer, mit denen ich zu tun hatte - mein eigenes nicht mitgerechnet (nein, das verkauf ich nicht, ist eine spezialkonstruktion) ;)

                Sie haben alle ähnliche Macken. man weiß nicht, wer von wem wem abgeschrieben hat.

                Ich weiß ja nicht, welche der aufgezählten Systeme du schon alle benutzt hast, aber meine Erfahrung ist anders: Jedes System hat komplett andere Macken.

                Die Bedienung auch _ohne_ javscript angenehm zu machen, wäre mir ein Anliegen.

                Javascript macht Dinge einfacher und angenehmer. Ein CMS ohne Javascript realisieren zu müssen ist eine Strafe! Sowohl für den Programmierer, als auch später für den Nutzer.

                Darüberhinaus sollte ein CMS heutzutage auch CRT enthalten.
                Was nütze es mir, wenn der Verkauf neue Telefonnummern erhält, und ich das dann in hunderten von Seiten händisch nachbessern muss, oder Frau Müller-Busch ab nächsten Monat nicht mehr für daw Unternehmen tätig ist, ihr eMail-Name aber trotzdem noch auf dreißig Seiten erscheint.

                Inhalte aktuell zu halten und ggf. aus dynamischen Quellen abzufragen bzw. zentralisiert zu halten ist nicht Aufgabe des CMS, sondern Aufgabe der Realisators.

                - Sven Rautenberg

                --
                "Love your nation - respect the others."
                1. Hello,

                  Ich weiß ja nicht, welche der aufgezählten Systeme du schon alle benutzt hast, aber meine Erfahrung ist anders: Jedes System hat komplett andere Macken.

                  Erstmal kenn ich nur welche, die auf PHP basieren.
                  Ich schaue mir die immer nur an, wenn ich mal wieder einen Auftrag bezüglich Sicherheitslücken, Datenintegrität usw. bekomme. Und da sind sie bisher alle ziemlich ähnlich.

                  Fehler in den Lockingstrategien, Fehler in der Ermittlung von Zugangsberechtigungen, Verwendung von max_lifetime für das Ungültigmachen von Sessions, Verwendung von Sessions für die Berechtigung (also das vorhandensein der Session == Berechtigung, oder so ähnlich), usw.

                  Und wenn dann überfrachtete JavaScriptgebilde durchaus leicht durch einen zusätzlichen Request und einen Historie-Stack (auf dem Server natürlich) ausgetauscht werden könnten, dann mag ich lieber die serverbasierte javascriptlose Version.

                  Inhalte aktuell zu halten und ggf. aus dynamischen Quellen abzufragen bzw. zentralisiert zu halten ist nicht Aufgabe des CMS, sondern Aufgabe der Realisators.

                  Das muss aber das CMS durch seine Konstruktion und Struktur auch unterstützen!

                  Von einem einfachen Freewaresystem für meine Homepage erwarte ich das auch nicht, aber von einem professionellen, das man für einige Hundert, wenn nicht soger Tausend Euro gekauft hat, erwarte ich das schon.

                  Im Moment habe ich hier wieder eins am Wickel.
                  Leider kann ich die Fehler (einzelne) nur von außen beurteilen (erzeugen und dokumentieren), weil es in PEARL geschrieben ist. Da reichen meine Kenntnisse leider bei weitem nicht aus.
                  Schade eigentlich, ich hätte den Auftrag gerne ausgeführt :-(

                  Harzliche Grüße vom Berg
                  http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau

                  1. Moin!

                    Ich weiß ja nicht, welche der aufgezählten Systeme du schon alle benutzt hast, aber meine Erfahrung ist anders: Jedes System hat komplett andere Macken.

                    Erstmal kenn ich nur welche, die auf PHP basieren.
                    Ich schaue mir die immer nur an, wenn ich mal wieder einen Auftrag bezüglich Sicherheitslücken, Datenintegrität usw. bekomme. Und da sind sie bisher alle ziemlich ähnlich.

                    Nun ja, Selbstbau-PHP-Skripte neigen offenbar dazu, die typischen PHP-Fehler zu integrieren. Insbesondere, wenn die Systeme schon etwas länger verfügbar sind - weil sich niemand die Mühe macht, neue PHP-Programmiererkenntnisse auch in allen Programmteilen umzusetzen. Das kombiniert mit einer eher ungünstigen Herstellungskultur (sprich: Kann man das System überhaupt maschinell testen, siehe Stichwort Unit-Tests) führt dann eben zum langen Überdauern von problematischem Code.

                    Und wenn dann überfrachtete JavaScriptgebilde durchaus leicht durch einen zusätzlichen Request und einen Historie-Stack (auf dem Server natürlich) ausgetauscht werden könnten, dann mag ich lieber die serverbasierte javascriptlose Version.

                    Javascript hat als allererstes die Bedienung zu erleichtern. Das läuft client-only, ändert an der Kommunikation mit dem Server nichts. Wenn dann aber so Dinge wie AJAX hinzukommen, wird's interessant, keine Frage. Und dann wird's auch komplizierter, und ohne vernünftige Testumgebung dürfte es nur noch sehr schwierig sein, Veränderungen durchzuführen, ohne das System zu destabilisieren.

                    Inhalte aktuell zu halten und ggf. aus dynamischen Quellen abzufragen bzw. zentralisiert zu halten ist nicht Aufgabe des CMS, sondern Aufgabe der Realisators.

                    Das muss aber das CMS durch seine Konstruktion und Struktur auch unterstützen!

                    Nun ja, fast alle Systeme erlauben den Einsatz von Templates. Viele erlauben irgendeinen Include-Mechanismus. Etliche erlauben auch die Einbindung von ausführbarem Code, oder die Einbindung des Resultats von separat lagernden Skripten.

                    Von einem einfachen Freewaresystem für meine Homepage erwarte ich das auch nicht, aber von einem professionellen, das man für einige Hundert, wenn nicht soger Tausend Euro gekauft hat, erwarte ich das schon.

                    Ich darf dir versichern: Die gekauften CMS, mit denen ich gearbeitet habe, namentlich Imperia und Reddot, leisten, was hier gewünscht scheint, mindestens auf eine denkbare Art. Oft auch auf diverse Arten. Dazu muß man sich allerdings etwas auskennen.

                    Im Moment habe ich hier wieder eins am Wickel.
                    Leider kann ich die Fehler (einzelne) nur von außen beurteilen (erzeugen und dokumentieren), weil es in PEARL geschrieben ist. Da reichen meine Kenntnisse leider bei weitem nicht aus.

                    Du meinst PERL?

                    Schade eigentlich, ich hätte den Auftrag gerne ausgeführt :-(

                    War der Spruch nicht von dir, dass man Geld u.A. deshalb verdient, weil man etwas kann, was andere nicht können? Gilt dummerweise auch anders herum.

                    - Sven Rautenberg

                    --
                    "Love your nation - respect the others."
                    1. Hello,

                      Du meinst PERL?

                      Ja.
                      Siehst Du? So weinig kann ich das. Ich kann noch nicht mal den Namen schreiben *tztz*

                      Schade eigentlich, ich hätte den Auftrag gerne ausgeführt :-(

                      War der Spruch nicht von dir, dass man Geld u.A. deshalb verdient, weil man etwas kann, was andere nicht können? Gilt dummerweise auch anders herum.

                      Ja. Daran erinnerst Du Dich noch?
                      Im Moment hätte ich's eben gut gebrauchen können. Der Kunde drängelte mich etwas, weil ich ihm schon öfter geholfen habe. Hier musste ich aber passen. Bei Sicherheitsfragen sollte man es übergenau nehmen!

                      BTW: Schau doch bitte nochmal in den Thread zum Thema qMail. Ich habe da noch eine Frage zum Thema "patchen von Programmteilen"; wollte deswegen keinen neuen Thread aufmachen.

                      Harzliche Grüße vom Berg
                      http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau

          2. Hello,

            Ich will kein fertiges CMS.

            beschäftige Dich erstmal mit einem einfachen Menusystem.

            Dort können Seiten durch einen Berechtigten eingestellt werden und erscheinen dann in der Sitemap bzw. dem Menu.

            Ein Beispiel hierfür ist "http://walkenrieder-bedachung.de"

            Es ist mal nebenbei entstanden, um kleinen Firmen einen variablen Auftritt zu ermöglichen, aber leider nicht vollendet worden... wobei eigentlich nur die W3-Validität überarbeitet werden müsste.

            Mann kann mittels eines einfachen Tools Seiten hinzufügen oder löschen. Diese können Bilder, Texte, Verweise, sowie Links zu Unterseiten enthalten.

            Das Überschreiben vorhandener Seiten ist mit den passenden Berechtigungen einfach möglich.

            Viele Firmen wollen gar nicht mehr...

            ---------------

            Der nächste Schritt wäre dann die Übertragung in eine Datenbank

            Dann käme die Aufteilung der Seiten in einzelne "Items", also Elemente mit gleichartigen Eigenschaften

            Dann kommen Benutzeroptionen

            Dann Anzeigefunktionen, wie "nur montags anzeigen" o. ä.

            Dann Editorfunktionen und fertige Templates, bestehend aus Items, um das Neuerstellen von Seiten zu verienfachen...

            usw.

            Alleine für die Benutzerverwaltung habe ich ca. 1000 Stunden (2,7 Leute über mehrere Wochen) benötigt.

            Leute, die Typo3 oder ähnliche Systeme bauen, haben da bisher bestimmt mehrere 100.000 "Mannstunden" reingesteckt.

            Deine Kompetenz sollte also erstmal darin stecken, die Grenzen klar zu definieren.

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau