Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wykrycie nieistniejącego obrazka
misterious
post 17.02.2013, 14:31:59
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 7.10.2012

Ostrzeżenie: (0%)
-----


Witam!
Nigdzie nie mogę się doszukać rozwiązania, więc zwracam się do was.
Mam stronę, na której znajdują się obrazki z zewnętrznych stron.
Aktualnie jedna strona ma awarię, więc chciałbym ten obrazek ukryć - i tutaj potrzebuję ten skrypt, który wykryje że plik z podanego adresu nie istnieje

Ten post edytował misterious 17.02.2013, 14:32:17
Go to the top of the page
+Quote Post
CuteOne
post 17.02.2013, 15:19:20
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  1. $content = @file_get_contents('http://w.pl/obrazek.jpg');
  2.  
  3. if($content === false) echo 'nie istnieje';


Ten post edytował CuteOne 17.02.2013, 15:19:44
Go to the top of the page
+Quote Post
misterious
post 17.02.2013, 15:46:06
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 7.10.2012

Ostrzeżenie: (0%)
-----


Przykro mi :/
Nie funkcjonuje to ;/
Możesz sam sprawdzić na tym obrazku http://www.mctb.shop.tm/banner.png closedeyes.gif

Ten post edytował misterious 17.02.2013, 15:46:22
Go to the top of the page
+Quote Post
CuteOne
post 17.02.2013, 18:12:27
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Co znaczy nie funkcjonuje? przetestowałem i zgodnie z założeniami działa jak należy
  1. $content = file_get_contents('http://www.mctb.shop.tm/banner.png');
  2. if ($content === false)
  3. echo 'a';


po usunięciu małpy (@) pokaż jaki błąd wyświetli, może nie masz funkcji file_get_contents

Ten post edytował CuteOne 17.02.2013, 18:15:28
Go to the top of the page
+Quote Post
misterious
post 18.02.2013, 16:32:17
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 7.10.2012

Ostrzeżenie: (0%)
-----


  1. $zapytanie = "SELECT `wygasa`, `kategoria`, `adres`, `obrazek`, `opis`, `id` FROM reklamy ORDER BY `id` DESC";
  2. $idzapytania = mysql_query($zapytanie);
  3. $dzisiaj = time();
  4. echo '</div><div id="glowny">';
  5. while ($wiersz = mysql_fetch_row($idzapytania))
  6. {
  7. if ($wiersz[0] > $dzisiaj)
  8. {
  9. $content = file_get_contents("$wiersz[3]");
  10. if($content === false)
  11. {
  12. echo 'siema';
  13. }
  14. else
  15. {
  16. $przekieruj = '<a href="przekieruj.php?id='. $wiersz[5] .'">';
  17. $generuj_adres = ''. $przekieruj .'<img src="'. $wiersz[3] .'" onload="resize_image(this);" alt="'. $wiersz[4] .'" style="border-radius: 10px;" /></a>';
  18. echo $generuj_adres;
  19. echo '<br />Kategoria: <a href="kategorie.php?kat='. $wiersz[1] .'">'. $wiersz[1] .'</a><hr />';
  20. }
  21. }
  22. }

Mam taki kod.

Błędu mi żadnego nie pokazuje wink.gif
Go to the top of the page
+Quote Post
Crozin
post 18.02.2013, 16:52:30
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Pod podanym przez Ciebie linkiem (http://www.mctb.shop.tm/banner.png) mamy dostęp do "normalnej" strony o dziwnym adresie. Serwer zwraca poprawny dokument HTML.
2. Żeby sprawdzić czy obrazek pod danym URL-em jest w porządku należałoby sprawdzić kilka nagłówków z odpowiedzi na żądanie HTTP: status odpowiedzi - 2xx oraz 3xx będą OK oraz nagłówek Content-Type pasujący do obrazów (np. image/png).
3. To jednak nadal nie gwarantuje poprawności obrazu. Dalszym krokiem byłoby pobranie zawartości (odpowiedzi) i potraktowanie jej jakąś funkcją oczekującą poprawnego pliku z obrazem. Jeżeli korzystasz z GD będzie to imagecreatefrom[jpeg|gif|png|...]. Jeżeli funkcja ta nie zwróci błędu będzie oznaczać to, że pobrany plik już niemal na 100% jest poprawnym obrazem i przeglądarka użytkownika będzie wstanie go wyświetlić.

PS. Zamiast każdorazowo sprawdzać kilka(dziesiąt?) plików na innych serwerach, lepiej byłoby Ci skopiować je, a później serwować ze swojego serwera.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:20