Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: HEADER zwracany przez serwer
Forum PHP.pl > Forum > PHP
brtekb
Witam.
Problem jest następujący:

Wykorzystując na stronie kodowanie BBCODE każdy może wstawić do swojego profilu/tekstu osobistego mi. obrazek.
Kod chyba jasny:
Kod
[img]url_do_obrazka[/img]


Wszystko pięknie, ale w ten sposób można wsadzić na stronę wszystko!
Wystaczy dać link nie do obrazka, a do pliku np. PHP.

Zabezpieczyłem to na razie prowizorycznie: ograniczyłem w bbcode co rozszerzeń plików graficznych.
Ale jaki problem, zmienić nazwę z plik.php na plik.jpg ?
Żaden.

Dowiedziałem się, że załatwi to pobranie header'a który jest wysyłany wraz z obrazem do mojege serwa.
Content zawiera w końcu typ pliku.

Pytanie następujące:
Jak pobrać tego header'a?

Pozdrawiam,
brtekb


### EDIT

Pytanie zadam prościej:
Jak sprawdzić czy to co pobieramy przez <img> jest rzeczywiście obrazem?
em1X
Podsuń ten adres funkcji getImageSize" title="Zobacz w manualu PHP" target="_manual. Jeżeli jest to prawidłowy obrazek to funkcja zwróci Ci tablicę z danymi na jego temat. Jeżeli nie otrzymasz tych danych to możesz zastąpić ten obrazek swoim, ze swojego serwera, np. z napisem "Obrazek nie może być wyświetlony".

Możliwości jest dużo, baw się smile.gif
brtekb
Pomysł pierwsza klasa, dzięki.
Pytanie - jak?

Jeśli zamieniam z BB na HTML za pomocą:
Kod
$str = preg_replace("#\[img\](.*?)\.(png|jpg|gif|jpeg|PNG|JPG|JPEG|GIF)\[/img\]#si", "<img src=\"\\1.\\2\" border=\"0\" style=\"max-width: 430px;\" alt=\"Obrazek\" />", $str);


Jak powyciągać z danego $str wszystkie obrazy pomiędzy znacznikami img i każdy posprawdzać?

brtekb
em1X
  1. <?php
  2. /**
  3.  * Konwertuje znaczniki [img] na html.
  4.  *
  5.  * @param String $kod Tekst do konwersji
  6.  * @return String Tekst po konwersji
  7.  */
  8. function bbcode_img($kod)
  9. {
  10. if (preg_match('/[img]http://(.*?)[/img]/i', $kod, $m))
  11. {
  12. // url do podstawienia
  13. $url = (@getimagesize($m[1]) === false) ? '/images/fakeImage.jpg' : $m[1];
  14.  
  15. return str_replace('[img]'.$m[1].'[/img]', '<img src="'.$url.'" alt="user image" />', $kod);
  16. }
  17.  
  18. // nie znaleziono poprawnego adresu miedzy znacznikami
  19. // [img] wiec pozostaw tekst taki jaki jest
  20. return $kod;
  21. }
  22.  
  23.  
  24. // przyklad
  25. $kod = " sdjhad jadh jkh [img]http://www.4to40.com/images/poems/alpin/comb.gif[/img] dass das asd ";
  26. print bbcode_img($kod);
  27. ?>


przykład zwróci:

sdjhad jadh jkh dass das asd
brtekb
Wystarczyło podanie wyrażenia winksmiley.jpg
zamiast:
preg_math
lepiej zastosować preg_math_all i jeździć po $m[1] pentelką.

Dzięki, za pomoc.


Kod
preg_match_all('/\[img\](.*?)\[\/img\]/i', $str, $m);

     foreach($m[1] as $i => $url){
          if(@getimagesize($url) === false)
          $str = str_replace("[img]".$url."[/img]", "<b>Błędny obraz</b>", $str);
          else
          $str = str_replace("[img]".$url."[/img]", "<img src=\"".$url."\" border=\"0\" style=\"max-width: 430px;\" alt=\"Obrazek\" />", $str);
     }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.