Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Niedziałający skrypt uploadu avatarów
Forum PHP.pl > Forum > Przedszkole
czernin
Witam,

Napisałem skrypt przedstawiony poniżej, lecz nie działa. Mówiąc "nie działa" mam na myśli to, że nie jest wyświetlany komunikat o poprawnie dodanym avatarze i obrazek nie jest wysyłany na serwer. Czy mógłby mi ktoś podpowiedzieć, co robię źle?

  1. <?php
  2.  
  3. if(isset($_FILES['avatar'])) {
  4.  
  5. $user = 'jakis_tam_nieznany_user';
  6. $nazwa_tymaczsowa_avataru = $_FILES['avatar']['tmp_name'];
  7. $nazwa_avataru = $_FILES['avatar']['name'];
  8. $rozmiar_avataru = $_FILES['avatar']['size'];
  9. $rozszerzenie_avataru = substr($nazwa_avataru, -3);
  10. $katalog_do_zapisu_avataru = 'images/avatary/'.$user.'.gif';
  11.  
  12. if($rozszerzenie_avataru === 'gif') {
  13.  
  14. if(is_uploaded_file($nazwa_tymaczsowa_avataru)) {
  15.  
  16. move_uploaded_file($nazwa_tymaczsowa_avataru, $katalog_do_zapisu_avataru);
  17.  
  18. }
  19.  
  20. } else {
  21.  
  22. echo 'Avatar musi być obrazkiem o rozszerzeniu .gif';
  23.  
  24. }
  25.  
  26. }
  27.  
  28. echo '<b>Zmień avatar:</b><br />
  29. <form method="post" action="avki.html">
  30. <input type="file" name="avatar" /><br /><br />
  31. <input type="submit" value="Zmień" />
  32. </form>';
  33.  
  34. ?>
b4rt3kk
W formularzu brakuje enctype="multipart/form-data".

  1. <form method="post" action="avki.html" enctype="multipart/form-data">


I nie tak się sprawdza rozszerzenie pliku.

  1. $rozszerzenie_avataru = substr($nazwa_avataru, -3);


Rozbij nazwę po kropce:

  1. $tmp = explode('.', $nazwa_avataru);
  2. $extension = $tmp[sizeof($tmp)-1];


co i tak nie daje pewności, że wrzucony plik o rozszerzeniu .gif jest rzeczywiście gifem.

Jak ma się wyświetlać jakiś komunikat, jak żadnego nie ma.

  1. if(move_uploaded_file($nazwa_tymaczsowa_avataru, $katalog_do_zapisu_avataru)) echo 'dodano plik';
czernin
Poprawiłem skrypt według Twoich wskazówek. Gdy uploadowany obrazek ma rozszerzenie .gif wszystko jest ok. Natomiast gdy rozszerzenie jest inne nie wyświetla się komunikat z błędem. Wie ktoś może, dlaczego?

  1. <?php
  2.  
  3. if(isset($_FILES['avatar'])) {
  4.  
  5. $user = 'jakis_tam_nieznany_user';
  6. $nazwa_tymaczsowa_avataru = $_FILES['avatar']['tmp_name'];
  7. $nazwa_avataru = $_FILES['avatar']['name'];
  8. $rozmiar_avataru = $_FILES['avatar']['size'];
  9.  
  10. $tmp = explode('.', $nazwa_avataru);
  11. $rozszerzenie_avataru = $tmp[sizeof($tmp)-1];
  12.  
  13. $katalog_do_zapisu_avataru = 'images/avatary/'.$user.'.gif';
  14.  
  15. if($rozszerzenie_avataru === 'gif') {
  16.  
  17. if(is_uploaded_file($nazwa_tymaczsowa_avataru)) {
  18.  
  19. move_uploaded_file($nazwa_tymaczsowa_avataru, $katalog_do_zapisu_avataru);
  20. echo 'Avatar został zmieniony.';
  21.  
  22. } else {
  23.  
  24. echo 'Avatar musi być obrazkiem o rozszerzeniu .gif';
  25.  
  26. }
  27.  
  28. }
  29.  
  30. }
  31.  
  32. echo '<b>Zmień avatar:</b><br />
  33. <form method="post" action="avki.html" enctype="multipart/form-data">
  34. <input type="file" name="avatar" /><br /><br />
  35. <input type="submit" value="Zmień" />
  36. </form>';
  37.  
  38. ?>
nospor
Cytat
Natomiast gdy rozszerzenie jest inne nie wyświetla się komunikat z błędem. Wie ktoś może, dlaczego?
Bo przecież jak coś nie jest GIFem to ty nie wyświetlasz żadnego komunikatu błędu....

Przecież o to:
echo 'Avatar musi być obrazkiem o rozszerzeniu .gif';
masz w IF, który jest prawdziwy gdy coś jest gifem. smile.gif Ciut logiki i mniej ślepoty się kłania wink.gif
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.