Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload plików - resultat pozytywny, ale brak pliku na FTP
Forum PHP.pl > Forum > Przedszkole
Mody23
Witam!

Zrobiłem sobie upload plików. Niby wszystko działa jak trzeba, ale pliku w folderze upload na FTP nie ma :/ Co jest nie tak?

  1. <?php
  2. if ( !isset($_POST['wrzucaj']) )
  3. {
  4. $body = '<form enctype="multipart/form-data" action="upload.php" method="POST">
  5. <input name="plik" type="file">
  6. <input type="submit" name="wrzucaj" value="Wgraj">
  7. </form>';
  8. echo $body;
  9. }
  10. else if ( isset($_POST['wrzucaj']) )
  11. {
  12. $u_plik = $_FILES['plik']['tmp_name'];
  13. $u_nazwa = $_FILES['plik']['name'];
  14. $u_rozmiar = $_FILES['plik']['size'];
  15. $u_max_rozmiar = 2*1024*1024; //Maksymalny rozmiar pliku dozwolony do wgrania a bajtach - w przyk?adzie 2MB
  16.  
  17. if($u_rozmiar > $u_max_rozmiar)
  18. {
  19. echo "Plik jest zbyt du?y!";
  20. }
  21. elseif(is_uploaded_file($u_plik))
  22. {
  23. move_uploaded_file($u_plik, "upload/$u_nazwa");
  24. echo "Plik: <b>$u_nazwa</b> ($u_rozmiar B) zosta? uploadowany!";
  25. }
  26.  
  27. }
  28. ?>


Po wrzuceniu pliku dostaję komunikat:

Cytat
Plik: Video call snapshot 31.png (138375 cool.gif zosta? uploadowany!


Co moze powodowac blad?
nospor
Wynik pozytywny powiadasz? Nic dziwnego, że pozytywny, jak ty nie sprawdzasz czy się upload powiódł czy nie, tylko zawsze wyswietlasz napis OK.... No jak tak można??

move_uploaded_file() zwraca true albo false. Na tej podstawie masz pisać OK albo NIE OK
Mody23
To nic nie daje... sam zobacz, zrobilem sobie warunek, ktory sprawdza czy jest TRUE czy tez FALSE. Otrzymuje TRUE, a pliku na FTP nie ma ;/

  1. <?php
  2. if ( !isset($_POST['wrzucaj']) )
  3. {
  4. $body = '<form enctype="multipart/form-data" action="upload.php" method="POST">
  5. <input name="plik" type="file">
  6. <input type="submit" name="wrzucaj" value="Wgraj">
  7. </form>';
  8. echo $body;
  9. }
  10. else if ( isset($_POST['wrzucaj']) )
  11. {
  12. $u_plik = $_FILES['plik']['tmp_name'];
  13. $u_nazwa = $_FILES['plik']['name'];
  14. $u_rozmiar = $_FILES['plik']['size'];
  15. $u_max_rozmiar = 2*1024*1024; //Maksymalny rozmiar pliku dozwolony do wgrania a bajtach - w przyk?adzie 2MB
  16.  
  17. if($u_rozmiar > $u_max_rozmiar)
  18. {
  19. echo "Plik jest zbyt du?y!";
  20. }
  21. elseif(is_uploaded_file($u_plik))
  22. {
  23. $zauploadowany = move_uploaded_file($u_plik, "upload/$u_nazwa") == TRUE ? 'Tak, zwraca prawde' : 'Nie, cos jest nie tak...';
  24. echo $zauploadowany;
  25. if (move_uploaded_file($u_plik, "upload/$u_nazwa") == TRUE )
  26. {
  27. echo "Plik: <b>$u_nazwa</b> ($u_rozmiar B) zosta? uploadowany!";
  28. }
  29. else
  30. {
  31. echo "Jest blad...";
  32. }
  33. }
  34.  
  35. }
  36. ?>
nospor
To znaczy, że wszystko się powiodło, a ty szukasz tego w złym katalogu smile.gif
Mody23
Jeszcze jedno. Chcialbym, aby mozliwe bylo uploadowanie plikow ze wszystkimi rozszerzeniami. I chcialbym aby byla mozliwosc pobierania tych plików. Czyli jeśli ktoś wrzuci plik obraz.png to wygeneruje mu adres: http://mojastrona/upload/obraz.png i chce aby wyświetliło się okno pobierania, a nie obrazek na stronie jak np. tutaj: http://forum.php.pl/style_emoticons/defaul...wheadsmiley.png
Chcialbym aby po wejsciu na mojej stronie w taki link, otworzyło się okno pobierania. Jak to zrobić? Chcialbym aby to bylo z każdym plikiem w kazdym rozszerzeniu (takze .php).
nospor
No przecież możesz tu wrzucać dowolne rozszerzenie. Przecież w tym kodzie nie masz żadnych ograniczeń prócz rozmiaru.

Co do download to:
http://www.php.net/manual/en/function.header.php
Example #1 Download dialog
Mody23
Cytat(nospor @ 18.02.2012, 14:24:42 ) *
No przecież możesz tu wrzucać dowolne rozszerzenie. Przecież w tym kodzie nie masz żadnych ograniczeń prócz rozmiaru


A co jeśli ktoś wrzuci plik .php i go wykona w przeglądarce? To niebezpieczne, dlatego chce to jakoś zabezpieczyć.

A co do downloadu, to mam tak:

  1. if ( isset($_GET['download']) && intval($_GET['download']) == '2' )
  2. {
  3. header('Content-Disposition: attachment; filename="upload/2.png"');
  4. }


Jednak nic się nie dzieje :/ Dlaczego?
nospor
Cytat
A co jeśli ktoś wrzuci plik .php i go wykona w przeglądarce? To niebezpieczne, dlatego chce to jakoś zabezpieczyć.
No to albo chcesz wszystko wrzucać albo nie chcesz... się zdecyduj.

Robisz blokade do tego katalogu, a pliki udostepniasz ludziom przed download - i juz.

Co do kodu download:
no a gdzie zwracasz plik? Nigdzie. W manualu co cie odeslalem przeciez jest tam readfile
Mody23
Cytat
Robisz blokade do tego katalogu


Jakiś przykład?
nospor
No albo ten katalog dajesz poza katalogiem www, do którego ma dostęp przeglądarka, albo dajesz w nim .htaccess z DENY
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.