skyposter: phpinfo() mit eigener *.css anzeigen

Hallo

Ich will auf meiner HP im Admin-Bereich mit phpinf() die Informationen über PHP ausgeben. Jedoch will ich mein Design nutzen. Wie kann ich Verhindern, dass die Seite formatiert wird?

  1. Moin skyposter,

    Ich will auf meiner HP im Admin-Bereich mit phpinf() die Informationen über PHP ausgeben. Jedoch will ich mein Design nutzen. Wie kann ich Verhindern, dass die Seite formatiert wird?

    geht nicht. Ich würde an deiner Stelle einfach deine Seite erstellen und da, wo phpinfo hin soll, es per iframe reinladen. Oder du lädst es in einen string, entfernst den <head> (usw.), sodass nur noch der inhalt vom <body> da ist, und gibts das direkt in deiner Seite aus.

    Ansonsten kannst du natürlich ganz "unvalide" vorgehen und einfach ein <style>...</style> an die Position deiner Wahl stellen. Afaik interpretieren die meisten browser das nämlich auch, wenn es nicht im <head> steht.

    Gruß,

    Sven

    --
    !:        Evv. bald wieder weg
    Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
    Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
    Decode:   http://peter.in-berlin.de/projekte/selfcode/
    E-Mail:   coming soon
    me:       'd comed long ago
    1. Moin!
      wie soll er dir phpinfo in einen string laden? interessiert mich auch.
      tschüss ichen

      --
      Selfcode: sh:( fo:| br: n4:& ie:% mo:| mo:| de:] zu:) fl:| ss:| ls:[ js:|
      1. Moin ichchen,

        wie soll er dir phpinfo in einen string laden?

        Mit einem Trick.

        Sagen wir, folgendes liegt vor:

        /             (root des servers)
          /phpinfo.php  (PHP-Datei mit INhalt <?php phpinfo(); ?>)
          /bla.php      (unsere php-Datei, die die php-info manipulieren wird)

        Wir rufen also bla.php auf und wollen, dass bla.php die Ausgabe von phpinfo() in einen String lädt, um dann damit sonstwas zu machen.

        Natürlich geht nicht

        <?php
            $phpinfo = include 'phpinfo.php';
            ...
        ?>

        Wenn das include nämlich erfolgreich war (was wir doch hoffen), haben wir nur das phpinfo ausgegeben und in $phpinfo ist 1 gespeichert.

        Was können wir tun? phpinfo.php gibt auf jeden Fall die phpinfo() aus, das kann man nicht ändern.
        Was liegt also näher, als genau diese Ausgabe in einen string zu laden, in dem wir auf die Datei per HTTP-Query zugreifen? Also in dem wir 127.0.0.1/phpinfo.php anfragen?

        <?php
            $phpinfo = file_get_contents("http://$_SERVER[SERVER_NAME]/phpinfo.php");

        print htmlentities($phpinfo);
        ?>

        Juhuu - $phpinfo ist nun mit der phpinfo() gefüllt. Das beweist uns unsere html-maskierte ausgabe der phpinfo.

        Jetzt noch den Head wegzuschneiden, also nur den inhalt von <body> wiederzugeben, ist ein Kinderspiel:

        <html>
        <head>
          <title>Meine phpinfo()</title>
          <style> /* meine styles goen here */</style>
        </head>
        <body>
        <?php
            $datei = file_get_contents("http://$_SERVER[SERVER_NAME]/phpinfo.php");
            print preg_replace('/.*?<body>(.*?)</body>.*/is', '\1', $datei);
        ?>
        </body>
        </html>

        :)

        Viele Grüße,

        Sven

        --
        !:        Evv. bald wieder weg
        Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
        Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
        Decode:   http://peter.in-berlin.de/projekte/selfcode/
        E-Mail:   coming soon
        me:       'd comed long ago
        1. Hallo Sven!

          Was können wir tun? phpinfo.php gibt auf jeden Fall die phpinfo() aus, das kann man nicht ändern.

          doch ;-)

          Was liegt also näher, als genau diese Ausgabe in einen string zu laden, in dem wir auf die Datei per HTTP-Query zugreifen? Also in dem wir 127.0.0.1/phpinfo.php anfragen?

          sich die Ausgabe direkt aus dem Ausgabepuffer zu holen, siehe: http://de3.php.net/outcontrol ;-)

          $phpinfo = file_get_contents("http://$_SERVER[SERVER_NAME]/phpinfo.php");

          $foo[bar] sollte man übrigens nicht verwenden, siehe: http://de3.php.net/types.array#language.types.array.donts
          (btw., das funktioniert erst ab PHP 4.3, und auch da nur wenn fopen-wrapper aktiviert sind.

          Viele Grüße
          Andreas

          --
          SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
          1. Hallo Andreas,

            Was liegt also näher, als genau diese Ausgabe in einen string zu laden, in dem wir auf die Datei per HTTP-Query zugreifen? Also in dem wir 127.0.0.1/phpinfo.php anfragen?
            sich die Ausgabe direkt aus dem Ausgabepuffer zu holen, siehe: http://de3.php.net/outcontrol ;-)

            Jep, an sowas habe ich gar nicht gedacht. Hat übrigens Tom 2 Minuten vor dir geschrieben ;)

            $phpinfo = file_get_contents("http://$_SERVER[SERVER_NAME]/phpinfo.php");
            $foo[bar] sollte man übrigens nicht verwenden, siehe: http://de3.php.net/types.array#language.types.array.donts
            (btw., das funktioniert erst ab PHP 4.3, und auch da nur wenn fopen-wrapper aktiviert sind.

            Da hast du was in "den falschen Hut gekriegt". Also missverstanden. Ich habe nämlich nicht

            "http://".$_SERVER[SERVER_NAME]

            geschrieben, sondern

            "http://$_SERVER[SERVER_NAME]".

            Und strings in double quotations werden ja bekanntlich geparst, und da gibt's dann diese "Extraregel" bei Arrays. Ich binjetzt mal zu faul, um ins php-manual zu verlinken ;)

            Gruß,

            Sven

            --
            !:        Evv. bald wieder weg
            Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
            Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
            Decode:   http://peter.in-berlin.de/projekte/selfcode/
            E-Mail:   coming soon
            me:       'd comed long ago
            1. Hi!

              Jep, an sowas habe ich gar nicht gedacht. Hat übrigens Tom 2 Minuten vor dir geschrieben ;)

              [pref:t=85063&m=499838] ;-)

              Da hast du was in "den falschen Hut gekriegt". Also missverstanden. Ich habe nämlich nicht

              "http://".$_SERVER[SERVER_NAME]

              geschrieben, sondern

              "http://$_SERVER[SERVER_NAME]".

              Das stimmt, sorry ;-)

              Grüße
              Andreas

              --
              SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
      2. Hello,

        wie soll er dir phpinfo in einen string laden? interessiert mich auch.
        tschüss ichen

        ob_start();
        php_info();
        $text = ob_get_contents();
        ob_end_clean();

        Ich habe das noch nicht selber ausprobiert, aber so müsste das laut Manual gehen.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi!

          ob_start();
          php_info();
          $text = ob_get_contents();
          ob_end_clean();

          Ich habe das noch nicht selber ausprobiert, aber so müsste das laut Manual gehen.

          es geht wunderbar ;-)

          habs selber mal probiert: [pref:t=85063&m=499838], und Dank der bereits  verwendeten CSS-Klassen in phpinfo() lässt sich das wunderbar mit einem externen Stylesheet an die eigene Bedürfnisse anpassen. In phpinfo() werden diese Klassen in <head> per CSS formatiert, das kann man als Vorlage nehmen und dann einfach ausschneiden und gegen den Link aufs eigene Stylesheet ersetzen.

          Grüße
          Andreas

          --
          SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
          1. Hello,

            In phpinfo() werden diese Klassen in <head> per CSS formatiert, das kann man als Vorlage nehmen und dann einfach ausschneiden und gegen den Link aufs eigene Stylesheet ersetzen.

            'Finde ich verwunderlich, dass PHP nicht mal eine Funktion anbietet, die nur den <body> von phpinfo() ausgibt oder sogar die einzelnen Werte als großes Array.

            Übrigens gibt es bei http://de2.php.net/manual/de/function.phpinfo.php darüber eine ganze Menge interessante Sachen. Z.B. der "simple phpinfo parser and structurer" von gree dot kmd at wo dot cz.

            Ein Beispiel für das ob-Zeugs gibt es hier: http://www.michael-berndt.de/ie/phpinfo/colour.php.

            Gruß,

            Sven

            --
            !:        Evv. bald wieder weg
            Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
            Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
            Decode:   http://peter.in-berlin.de/projekte/selfcode/
            E-Mail:   coming soon
            me:       'd comed long ago
        2. Moin Tom,

          ob_start();
          php_info();
          $text = ob_get_contents();
          ob_end_clean();

          hm - recht gute Idee, vor allem wird der eigene Server dann von einem eigenen Request erspart, was mehr Perfomance bringt.

          btw: afaik heißt es phpinfo() und nicht php_info();

          viele grüße,

          Sven

          --
          !:        Evv. bald wieder weg
          Selfcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
          Encode:   http://forum.de.selfhtml.org/cgi-bin/selfcode.pl
          Decode:   http://peter.in-berlin.de/projekte/selfcode/
          E-Mail:   coming soon
          me:       'd comed long ago
  2. Hallo!

    Ich will auf meiner HP im Admin-Bereich mit phpinf() die Informationen über PHP ausgeben. Jedoch will ich mein Design nutzen. Wie kann ich Verhindern, dass die Seite formatiert wird?

    Wäre mir nicht bekannt dass das geht.

    Du kannst aber die Ausgabe puffern und manipulieren:

    <?php

    // Dein Stylesheet
    $css = 'http://example.com/styles.css';

    // Ausgabe-Puffer starten
    ob_start();

    // phpinfo() in Ausgabepuffer schreiben
    phpinfo();

    //Ausgabe in Variable schreiben
    $output = ob_get_contents();

    // Ausgabepuffer löschen
    ob_end_clean();

    // CSS-Definition ersetzen
    echo preg_replace("/<style[^>]*?>.*?</style>/si",'<link rel="stylesheet" type="text/css" href="'.$css.'">',$output);

    ?>

    Guck mal in den Quelltext einer "normalen" phpinfo()-Ausgabe, da siehst Du oben definiert welche Klassen es gibt, die kannst Du ja dann direkt benutzen.

    Grüße
    Andreas

    --
    SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/