Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z fukcja move_uploaded_files
Forum PHP.pl > Forum > PHP
Skr3czu
witam,

mam pewnien problem z funckjami copy() i move_uploaded_files()
Otóż na każdym zeswerze występuję ten sam problem, a mianowicie obydwie funckje zwracają wartośc false.
Chmody mam dobrze ustawione

Oto kod (formularz)

  1. <?php
  2. echo '<?xml version="1.0" encoding="iso-8859-2"?>';
  3. ?>
  4. <div>
  5. <form enctype="multipart/form-data" action="index.php?page=galeria/dodaj_zdjecie2" method="POST">
  6. <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
  7. Zdjęcie :&nbsp;&nbsp;
  8. <input name="plik" type="file" size="20" /> <br>
  9. Kategoria: <select size="1" name="kategoria"><br>
  10. <?
  11. $db = file("galeria/kategorie.php");
  12. $db_dziel = explode(',', $db[0]);
  13. foreach($db_dziel as $wiersz)
  14.  {
  15.  //wyswietlanie kategorii
  16.  echo '<option value="'.$wiersz.'">'.$wiersz.'</option>';
  17.  }
  18. ?>
  19. </select>
  20. <br>
  21. <input type="submit" value="Wyślij zdjęcie" /></form>
  22. </div>
  23.  
  24. Kod (skrypt wykonuący):
  25.  
  26. <?php
  27. $kategoria = $_POST['kategoria'];
  28. $plik = $_POST['plik'];
  29. chmod("galeria/$kategoria", 0777);
  30.  $przesylanie = copy("$plik", "galeria/$kategoria/$plik"); // kopiowanie pliku
  31.  if($przesylany)
  32.  {
  33.  echo "Plik został skopiowany<br>
  34.  Informacje o skopiowanym pliku:<br>
  35.  Nazwa: $plik<br>
  36.  Wielkość: $plik"; // komunikat
  37.  }
  38.  else
  39.  {
  40.  echo "Przesyłanie zdjęcia nie powiodło się!";
  41.  }
  42.  
  43. ?>
-=Peter=-
zamień:
  1. <?php
  2. $plik = $_POST['plik'];
  3. ?>


na:

  1. <?php
  2. $plik = $_FILES['plik']['tmp_name'];
  3. ?>


oraz

zamień:
  1. <?php
  2. $przesylanie = copy("$plik", "galeria/$kategoria/$plik");
  3. ?>


na

  1. <?php
  2. $przesylanie = copy("$plik", "galeria/$kategoria/$_FILES['plik']['name']");
  3. ?>


Sprawdź dla bezpieczeństwa za pomocą funkcji is_uploaded_file(), czy plik napewno został przesłany. Lepiej używać funkcji move_uploaded_file() niż copy()
Skr3czu
Nadal nie dziala funkcja zwaraca wartosc false.Robilem z funkcja move_uploaded_files(), ale tez nie dziala sad.gif
webdice
Masz ustawiony upload_tmp_dir?
Skr3czu
a jak się to ustawia?
webdice
albo w php.ini albo przez ini_set" title="Zobacz w manualu PHP" target="_manual
Skr3czu
A co w pliku php.in ?
webdice
Trochę samodzielności :/

Kod
upload_tmp_dir = /tmp


  1. <?php
  2. ini_set ('upload_tmp_dir', '/tmp');
  3. ?>


EDIT: Tylko scieżki podaj do istniejących katalogów.
Skr3czu
Nadal to nie dziala ...
-=Peter=-
usuń linijkę
  1. <?php
  2. chmod("galeria/$kategoria", 0777);
  3. ?>

bo niekoniecznie ustawi Ci ta funkcja chmody na 0777 (istnieje jakiś współcznynnik [nie pamietam dokladnie jaki], który odejmuje sie od liczby podanej w funkcji chmod()). Poprostu ręcznie ustaw chmody.

  1. <?php
  2. if(is_uploaded_file($_FILES['plik']['tmp_name'])){
  3. if(move_uploaded_file($_FILES['plik']['tmp_name'], '/galeria/'.$kategoria.'/'.$_FILES['plik']['name'])){
  4. echo 'Przeslano plik';
  5. }else{
  6.  echo 'Wystąpił błąd';
  7. }
  8. }else{
  9. echo 'Plik nie pochodzi z formularza.';
  10. }
  11. ?>


Edit: teraz jest dobrze ;p
jarmiar
ja mam podobny problem

nie mam ustawionej ścieszki do upload_temp_dir

więc sobie ją wstawiłem do pliku php.ini. (mam własny serwer lokalny krasnal serv) odpaliłem skrypt z phpinfo() a tu mi cały czas wyświetla że not value

i z uploadsem mam też problem

a z tego twojego kodu to mi wywala błąd:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\usr\apache\httpd\html\galeria\dodaj_zdjecie2.php on line 3

EDIT:
Serwer mam też na Homie
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.