Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzenie czy dany link prowadzi do obrazka
Forum PHP.pl > Forum > Przedszkole
michal_s
Witam mam mały problem. Z formularza ma być podawany link do obrazka. Jak najłatwiej sprawdzić czy użytkownik faktycznie podał link do pliku graficznego a nie np. http://forum.php.pl ?

Może przez jakąś wbudowaną funkcję która szuka wystąpień np .jpg , .jpeg i jeśli chociaż jedno zajdzie zwraca 1. Jest coś takiego? Szukałem ale coś nie mogę znaleźć.
tehaha
takie rozwiązanie Ci nic nie da, bo przecież można użyć mod_rewrite i podać link domena.pl/obrazek.jpg, który będzie innym plikiem

użyj funkcji getimagesize();

przykład:

  1. if($img = getimagesize("http://www.joemonster.org/images/logo.gif"))
  2. {
  3. print_r($img);
  4. }
  5. else echo "to nie jest obrazek";
  6.  
  7.  
  8. if($img2 = getimagesize('http://forum.php.pl/index.php?act=post&do=reply_post&f=27&t=166466'))
  9. {
  10. print_r($img2);
  11. }
  12. else echo "to nie jest obrazek";
michal_s
Hmm. Starałem się zrobić tak:

  1. $info = getimagesize($adres);
  2.  
  3. if ( $info[2]>=1) {
  4.  
  5. instrukcje;
  6. }
  7.  
  8. else {
  9. echo 'to nie jest obrazek!';
  10. }
  11.  
  12.  


Tyle że przy tym korzystaniu z getimagesize ciągle mi się wyświetla błąd że "[function.getimagesize]: failed to open stream: no suitable wrapper could be found"... W zmiennej $adres na 100% jest poprawny link do .jpeg
CuteOne
Widocznie podajesz zły adres do pliku..
michal_s
Pliku w sensie zdjęcia tak?
testowo napisałem takie coś:
  1. <?php
  2.  
  3. $adres = $_GET['adres'];
  4. $info = getimagesize($adres);
  5.  
  6. echo $adres;
  7.  
  8. if ( $info[2]>=1) {
  9.  
  10. echo 'pierwsze';
  11. }
  12.  
  13. else {
  14. echo 'kolejne';
  15. }
  16. ?>


adres zrobilem taki : (domena)/cos.php?adres=http://upload.wikimedia.org/wikipedia/commons/1/1e/Stonehenge.jpg

wynikiem jest:


Warning: getimagesize() [function.getimagesize]: URL file-access is disabled in the server configuration in /homepages/28/d344883396/htdocs/cos.php on line 4

Warning: getimagesize(http://upload.wikimedia.org/wikipedia/commons/1/1e/Stonehenge.jpg) [function.getimagesize]: failed to open stream: no suitable wrapper could be found in /homepages/28/d344883396/htdocs/cos.php on line 4
http://upload.wikimedia.org/wikipedia/comm...enge.jpgkolejne


linia 4 to: $info = getimagesize($adres);

Co tu jest źle, z tego co pisaliście powinno działać i z tego co doczytałem
tehaha
odpowiedź jest tutaj: URL file-access is disabled in the server configuration, w konfiguracji wyłączone jest obsługiwanie dostępu do pliku z URL dla tej funkcji, u mnie to co wkleiłeś działa bez problemu

a dokładniej chodzi o "allow_url_fopen", możesz zobaczyć przez phpinfo(), zapewne masz na off
michal_s
A no oczywiście masz rację ;/ Idzie to jakoś zmienić? (Pewnie głupie pytanie, ale średnio ogarniam temat więc wybaczcie). A jak nie to ma ktoś pomysł jak inaczej rozwiązać mój problem, bo serwera raczej nie zmienie...
webdice
Cytat(michal_s @ 29.12.2010, 20:29:40 ) *
A no oczywiście masz rację ;/ Idzie to jakoś zmienić? (Pewnie głupie pytanie, ale średnio ogarniam temat więc wybaczcie). A jak nie to ma ktoś pomysł jak inaczej rozwiązać mój problem, bo serwera raczej nie zmienie...


Najprościej w php.ini o ile masz do niego dostęp. Jeśli nie to pozostaje Ci ini_set bądź php_value/php_flag w pliku .htaccess - te sposoby również mogą być zablokowane.
michal_s
Pewnie dobrze mi doradziłeś tylko średnio wiem jak z tego skorzystać? Serwer mam na 1and1. Opisałbyś może trochę jaśniej jak to wszystko znaleźć? Albo w ogóle jak od innej strony podejść do problemu z początku. Może jeszcze dodam, że wcześniej skrypt sprawdza poprzez curla czy dany odnośnik w ogóle dokądś prowadzi, czy w ogóle istnieje. Więc może wystarczyłoby to sprawdzanie najczęstszych rozszerzeń plików graficznych na końcu...
thek
W takim razie wynika z tego co piszesz, że użycie fopen, socketów, file_get_contents i innych zostało zablokowane odgórnie. Dodałeś jednak, że curl jest dostępny, więc spróbuj go użyć do pobrania obrazka i sprawdź jego wyjście smile.gif Trochę naokoło, ale skoro tamte masz poblokowane (i znając życie nie ma możliwości ich odblokowania) to pozostaje tylko to lub to co wspomniał webdice. Spróbuj dopytać w 1&1 czy jest możliwość zmiany ustawień dyrektyw php i jeśli tak to w jaki sposób (podał Ci je webdice) i których.
michal_s
Jednak jest możliwość ich odblokowania smile.gif Dzięki za pomoc już wszystko działa.
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.