Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzić czy link to obrazek ?
Forum PHP.pl > Forum > Przedszkole
GreenGo
Witam,
jak sprawdzić czy podany link jest obrazkiem (jpg, gif, png) ? Wpadłem tylko na pomysł aby rozłożyć go za pomocą explode() i sprawdzić czy jest na końcu ciąg znaków odpowiadający tym trzem rozszerzeniom ale chyba nie jest to najlepszy pomysł.
flashdev
getimagesize() -> mime
Crozin
1. Rozszerzenie nie ma kompletnie nic wspólnego z typem pliku.
2. Linki do obrazów wcale nie muszą mieć "klasycznej" formy, z nazwą pliku (zawierającą rozszerzenie).
3. Mógłbyś sprawdzić jaki nagłówek Content-Type zwraca serwer w odpowiedzi, ale to nadal nie gwarantuje, że dane dane to rzeczywiście obraz.
4. Pewność da Ci tylko dosyć kosztowny proces jakim jest pobranie i odczytanie zawartości linku - jeżeli przy odczycie nie pojawią się błędy to jest to najprawdopodobniej obraz.

PS. Do sprawdzenia rozszerzenia masz pathinfo.
flashdev
Podsumowując można pobrać informację o typu obrazu z 4 miejsc:
- rozszerzenie pliku
- typ mime zwracany przez serwer w nagłówku
- typ mime zawarty w pliku (moje rozwiązanie powyżej)
- próba interpretacji obrazu odpowiednia funkcją zgodną z typem mime (zaproponowane przez Crozin)

Rozwiązania uporządkowałem od najmniej pewnego do najbardziej pewnego.
Przy czym to ostatnie daje 100% pewność oraz wymaga uprzedniego użycia jednego z 3 pierwszych, do określenia typu pliku - czyli wyboru funkcji.

Dodam jeszcze, że to przedostatnie rozwiązanie daje niemal 100% pewność, poza przypadkami gdy ktoś będzie chciał Cię świadomie wprowadzić w błąd, dlatego podałem to rozwiązanie jako moim zdaniem najlepsze w większości zastosowań.
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.