Archiwum

Posty oznaczone ‘osadzony’

Obrazki osadzone w jednoplikowym skrypcie php

Październik 18th, 2008 end 3 comments

Wstęp… ;)

Ostatnio pracuję nad projektem inferno – jedno plikowym systemem zdalnego zarządzania systemem, oczywiście na licencji GPL. Panel takiego skryptu musi ładnie wyglądać, a żeby ładnie wyglądał potrzebuje obrazków… Tylko jak tu teraz umieścić obrazki w jednym pliku z skryptem?

Okazuje się że to nie jest wcale takie trudne! Sposób podejrzałem w skrypcie c99shell. Wystarczy zakodować obrazki base64 i wstawić je do pliku php!:)
Wystarczy odpowiednia manipulacja funkcjami base64_decode oraz base64_encode.

No to zaczynamy!

Podstawą są same obrazki. Musimy je zakodować. Oczywiście, funkcją którą wykorzystamy do tego celu będzie base64_encode. Przyjmuję, że mamy plik graficzny w formacie gif o nazwie ‘ikonka.gif’.

$filename='ikonka.gif';
file_put_contents($filename.'base64.txt',
base64_encode(file_get_contents($filename));

Skrypt stworzy nam nowy plik – ikonka.gif.base64.txt, w którym to znajdziemy zakodowany nasz plik graficzny. Właściwie to już połowa pracy za nami :)

Teraz musimy zająć się skryptem, który ma obsługiwać ten obrazek. Przyjmuję, że skrypt jest w pliku skrypt.php, oraz obrazek będziemy chcieli wyświetlić poprzez skrypt.php?image=ikonka.

Na górze dokumentu dopisujemy więc:

if (isset($_GET['image']) && $_GET['image']=='ikonka') {
header('Content-type: image/gif'); //nasz plik był w formacie gif
echo base64_decode('MIEJSCE'); //tutaj umieszczamy "zakodowaną" zawartość pliku graficznego
exit(); //no i kończymy skrypt, bo obrazek już mamy!
}

I już mamy osadzony obrazek w skrypcie PHP :)

Więcej!

Zapraszam do pobrania skryptu Inferno, w którym można zobaczyć praktyczne i bardziej zaawansowane zastosowanie powyższej metody.

Good luck & have fun :)