phpinfo() mit eigener *.css anzeigen
skyposter
- php
0 Sven0 ichen
0 Andreas Korthaus
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?
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
Moin!
wie soll er dir phpinfo in einen string laden? interessiert mich auch.
tschüss ichen
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
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
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
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
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
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
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
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
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