Benutzer:Bse/php als png

Aus Wiki
Wechseln zu: Navigation, Suche

Bild siehe http://www.oern.de/time.png zeigt IP des Aufrufenden und aktuelle Serveruhrzeit an. Für den Besucher/Browser ist es ein ganz normales Bild mit richtigem Content-type etc, ohne dass er merken kann, dass ein Skript dahinter steckt.

Einstellung im lighttpd-Webserver, damit time.png gefunden werden kann: url.rewrite-final = (

 "^/time.png" => "/time.php"

) Mit apache analog mit mod_rewrite.

Quellcode time.php <?php header("Content-type: image/png"); # <= Content-Type richtig setzen $ip = $_SERVER['REMOTE_ADDR']; $string = $ip;

  1. Wenn $ip in bestimmter IP-Range, logge referrer in mysql-Datenbank und gebe Alarm per SMS oder sowas.
  2. Lauter Sachen, die man zwar auch aus dem httpd-Logs lesen könnte, aber so als Web-Bug gehts schneller.
  3. Man kann das Bild nun in jede statische html-Seite einbinden, ganz normal mit <img src="time.png">
  1. Wichtig für die Anzeige des Bildes sind nur die markierten Zeilen. # <=

$string2 = date("h:i:s A"); $im = imagecreatefrompng("seifert.png"); # <= vorhandenes Bild laden $color = imagecolorallocate($im, 220, 210, 60); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; $px2 = (imagesx($im) - 7.5 * strlen($string)) / 2; imagestring($im, 3, $px, 9, $string, $color); imagestring($im, 3, $px2, 19, $string2, $color); imagepng($im); # <= an Browser schicken imagedestroy($im); # <= Speicher freigeben ?>