Jakiś czas temu na potrzeby mailera napisałem poniższą funkcję.
Co robi?
W skrócie, przerabia obrazek na ciąg znaków który można bez problemowo wyświetlić w formie obrazka.
Zastosowanie.
Osobiście skrypt wykorzystuje przy wysyłaniu obrazków w mailach - dzięki temu omijamy blokowanie obrazków z zewnętrznego źródła w klientach poczty. Ogólnie zastosować można w każdym przypadku gdy mamy do czynienia z obrazkami. Po zastosowaniu jakiejś bazy danych, możemy np. stworzyć galerię, nie mając na serwerze ani jednego obrazka - cóż za oszczędność miejsca
Zabezpieczenia
Brak. Funkcja nie jest zabezpieczona z jednego powodu, obsługiwana jest jedynie przeze mnie, obrazki są z pewnego źródła. Natomiast walidacja czy to na pewno obrazek odbywa się wcześniej. ( Walidację np. po rozszerzeniu można wykonać poprzez zmienną $roz która przechowuje rozszerzenie )
Wykorzystywanie
Skoro to tu dałem, oznacza że wykorzystywać można to dowolnie, jednak proszę o pozostawienie komentarza w kodzie oraz ewentualnie jakieś ciepłe słowo w temacie
function imag($plik) { /* ==================================================== || imag(); by Shido || || by wyświetlić np: || || echo('<img src="'.imag("lokalizacja").'" />'); || ==================================================== */ if(http://www.php.net/preg_match("/http:\/\//i", $plik)) { $roz = http://www.php.net/explode('.', $plik); $roz = http://www.php.net/end($roz); $c = curl_init($plik); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($c); } else { $fileatt = $plik; $roz = http://www.php.net/explode('.', $fileatt); $roz = http://www.php.net/end($roz); $file = http://www.php.net/fopen($fileatt,'rb'); $data = http://www.php.net/fread($file,http://www.php.net/filesize($fileatt)); http://www.php.net/fclose($file); } return ('data:image/'.$roz.';base64,'.http://www.php.net/base64_encode($data).''); }
odgrzewam kotleta sprzed roku odpisując na ten post, ale co tam
base64 to tak ch...ciulowe rozwiązanie do tego typu rzeczy, że trudno znaleźć gorsze..
Po 1, kodowanie w ten sposób obrazków do celów wysłania emaili - głupota. Szukałem kiedyś sposoby aby obejść blokowanie obrazków przez klientów pocztowych i też wpadł mi w ręce ten base64. Długość zapisu tego kodowania jest zależna od rozmiaru kodowanej grafiki. ciąg znaków zawsze jest tak zajebiście długi, że serwery pocztowe w większości przypadków odrazu taką wiadomość odsyłają do spamu albo całkowicie blokują. Nie ma rozwiązania na blokowanie obrazków w emailach, bo jakby była to każda reklama którą dostaje od większych firm zawsze miałaby wyświetlone obrazki.
Co do baz danych. nie wyobrażam sobie 10 000 rekordów z obrazkami zapisanymi w base64, nie mówiąc już o 100 000 czy mln. Jest to tak niewydajne rozwiązanie, że poprostu się tego nie używa
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)