Sven: phpinfo() in String laden

Beitrag lesen

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