Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload
Forum PHP.pl > Forum > Przedszkole
sq6aah
Witam,
Uczę się PHP z ksi±żki "PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty" i dotarłem do skryptu upload-u:
  1. <html>
  2. <head>
  3. <title>Wysyłanie...</title>
  4. </head>
  5. <body>
  6. <h1>Wysyłanie pliku...</h1>
  7. <?php
  8.  
  9. if ($_FILES['plik']['error'] > 0)
  10. {
  11. echo 'Problem: ';
  12. switch ($_FILES['plik']['error'])
  13. {
  14. case 1: echo 'Rozmiar pliku przekroczył warto_ć upload_max_filesize'; break;
  15. case 2: echo 'Rozmiar pliku przekroczył warto_ć max_file_size'; break;
  16. case 3: echo 'Plik wysłany tylko czę_ciowo'; break;
  17. case 4: echo 'Nie wysłano żadnego pliku'; break;
  18. }
  19. }
  20.  
  21. // czy plik ma prawidłowy typ MIME?
  22.  
  23.  
  24. // umieszczenie pliku w pożądanej lokalizacji
  25. $lokalizacja = '/wyslane/'.$_FILES['plik']['name'];
  26.  
  27. if (is_uploaded_file($_FILES['plik']['tmp_name']))
  28. {
  29. if (!move_uploaded_file($_FILES['plik']['tmp_name'], $lokalizacja))
  30. {
  31. echo 'Problem: Plik nie może być skopiowany do katalogu';
  32. }
  33. }
  34. else
  35. {
  36. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
  37. echo $_FILES['plik']['name'];
  38. }
  39.  
  40. echo 'Plik wysłany<br><br>';
  41.  
  42. // ponowne sformatowanie zawarto_ci pliku
  43. $wp = fopen($lokalizacja, 'r');
  44. $zawartosc = fread ($wp, filesize ($lokalizacja));
  45. fclose ($wp);
  46.  
  47. $zawartosc = strip_tags($zawartosc);
  48. $wp = fopen($lokalizacja, 'w');
  49. fwrite($wp, $zawartosc);
  50. fclose($wp);
  51. // pokazanie, co zostało wysłane
  52. echo 'Podgląd zawarto_ci wysłanego pliku:<br><hr>';
  53. echo $zawartosc;
  54. echo '<br><hr>';
  55.  
  56. ?>
  57. </body>
  58. </html>


Przy Wysyłaniu pliku TXT wy¶wietla mi

Problem: Plik nie może być skopiowany do katalogu

Usun±łem ten warunek i mam kolejny problem:
Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku:

Czy mógłby mi kto¶ pomóc z tym skryptem.
Zgóry dziękuje za pomoc.
darko
spróbuj, zamień
  1. // umieszczenie pliku w pożądanej lokalizacji
  2. $lokalizacja = '/wyslane/'.$_FILES['plik']['name'];

na
  1. // umieszczenie pliku w pożądanej lokalizacji
  2. $lokalizacja = '/wyslane/';


pod warunkiem, że masz faktycznie folder wyslane z odpowiednimi uprawnieniami
sq6aah
Nadal nic.
Pracuje na Webservie.
darko
linia 26
  1. $lokalizacja = '/wyslane/';

linia 30 zamień na
  1. if (!move_uploaded_file($_FILES['plik']['tmp_name'], $lokalizacja.str_replace(" ","_",$_FILES['plik']['name'])))

Upewnij się, że masz folder wyslane w tym samym folderze w którym jest skrypt oraz że możesz do niego zapisywać.

upewnij się, że faktycznie wysyłasz plik, podaj, co zwraca Ci
  1. print_r($_FILES);


W Twoim przypadku input, z którego wczytujesz plik musi mieć name="plik" (<input type="file" name="plik" />)
sq6aah
Przerywa przy:
"Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku:"
darko
pokaż jeszcze formularz, może nie masz enctype="multipart/form-data"
sq6aah
  1. <title>Administracja _ wysyłanie nowych plików</title>
  2. </head>
  3. <h1>Wysyłanie nowych plików informacyjnych</h1>
  4. <form enctype="multipart/form-data" action="wyslij.php" method="post">
  5. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  6. Załaduj ten plik:<input name="plik" type="file">
  7. <input type="submit" value="Wy_lij">
  8. </form>
  9. </body>
  10. </html>
darko
Przyczyn± może być nie domykanie inputów, daj tak:

  1. <title>Administracja _ wysyłanie nowych plików</title>
  2. </head>
  3. <h1>Wysyłanie nowych plików informacyjnych</h1>
  4. <form enctype="multipart/form-data" action="wyslij.php" method="post">
  5. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
  6. Załaduj ten plik:<input name="plik" type="file" />
  7. <input type="submit" value="Wyslij" />
  8. </form>
  9. </body>
  10. </html>
  11.  
sq6aah
Teraz mam
"Problem: Plik nie może być skopiowany do katalogu"
darko
W zmiennej $lokalizacja musisz podać ¶cieżkę do folderu wyslane względem Twojego folderu temp ( lub upload na 100% nie jestem pewny, ale można to sprawdzić).
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.