Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z wgrywaniem plików na serwer
Forum PHP.pl > Forum > Przedszkole
sweter
Mam taki skrypt służący do wgrywania plików na serwer przez użytkowników:
Kod
$nazwa_pliku = $_FILES['zdjecie']['name'];
  
include_once("../elementy/dane_do_logowania.php");
if(@preg_match("# #",$nazwa_pliku)){
  echo "Nazwa pliku nie może zawierać spacji";
}else{
  if(isset($_SESSION['login'])){
      if(!is_uploaded_file($_FILES['zdjecie']['tmp_name'])){
        echo "Pliku nie prezeslano";
        unlink($_FILES['zdjecie']['tmp_name']);
      }else{
        /*przetwarzanie pliku*/
        $maksymalny_rozmiar_pliku=153600;
          if($_FILES['zdjecie']['size'] > $maksymalny_rozmiar_pliku){
            echo "Rozmiar pliku nie może przekroczyć 150 kB";
            unlink($_FILES['zdjecie']['tmp_name']);
          }else{
            /*przetwarzanie pliku*/
              if($_FILES['zdjecie']['type'] != "image/gif" AND
             $_FILES['zdjecie']['type'] != "image/pjpeg" AND
             $_FILES['zdjecie']['type'] != "image/jpeg" AND
             $_FILES['zdjecie']['type'] != "image/png"){
                 echo "Można pzesyłać jednynie pliki z rozszerzeniem .jpg i .gif";
                 unlink($_FILES['zdjecie']['tmp_name']);
          }else{
            /*format pliku jest poprawny*/
                    copy($_FILES['zdjecie']['tmp_name'], "./".$_SESSION['login']."/galeria/".$_FILES['zdjecie']['name']."");
                unlink($_FILES['zdjecie']['tmp_name']);
                echo "OK<br />
                <center>
              <img src=\"./".$_SESSION['login']."/galeria/".$_FILES['zdjecie']['name']."\" width=\"200\" border=\"0\" />
            </center>  
            ";
                include_once("../elementy/dane_logowania.php");
            
            
                      $pol = @mysql_connect($host,$login_host,$haslo_host);
  
              if (!$pol){
                    include_once("../elementy/error.php");
                echo $error_connect;
                exit;
                  }
                  $wyb = @mysql_select_db($nazwa_bazy_danych);
                  @mysql_query('SET CHARACTER latin2');
                  @mysql_query('SET NAMES latin2');
                  @mysql_query('SET CHARACTER_SET latin2');
                  if (!$wyb){
                      include_once("../elementy/error.php");
                echo $error_select;
                exit;
                  }
                  $zap = "INSERT INTO `zdjecia` (
`id` ,
`autor` ,
`link` ,
`opis`
)
VALUES (
NULL , '".$_SESSION['login']."', '$nazwa_pliku', '$opis'
);";
                  $wyn = mysql_query($zap);
                  if (!$wyn){
                      include_once("../elementy/error.php");
                echo $error_query;
                exit;
                  }
              @mysql_close($pol);
          
              }
            }  
          
      }
    }
  }
}

Niestety nie chce on działać, tzn. wpisywany jest nowy rekord do tabeli, ale plik nie jest kopiowany na serwer sad.gif
Dodam, że gdy ćwiczyłem na lokalnym serwerze to wszystko działało bez zarzutu. Dopiero jak wżuciłem stroną na cba.pl pojawił się ten błąd:(

Wiecie czemu?
Foxx
A działał kiedykolwiek? Gdziekolwiek? Wyświetla jakiś błąd? Komunikat? Jakiekolwiek objawy?
sweter
Jak sprawdzałem na swoim localhost'cie to było wszystko OK.
Dopiero jak wrzuciłem stroną na prawdziwy serwer pojawił się ten problem sad.gif
Foxx
Wyrzuć @ sprzed wszystkich funkcji i poczytaj jakie błędy wyświetla skrypt.
Czy to problem z dodawaniem informacji do bazy czy z kopiowaniem plików.
Czy prawa dostępu do katalogów na serwerze sa ustawione prawidłowo...
guilty82
zamiast copy() sprobuj move_uploaded_file() i sprawdz chmod() dla katalogu do ktorego kopiujesz pliki
sweter
Zadziałało funkcją move_uploaded_file() i atrybutoami ustawionymi na 777, ale to nie jest chyba zbyt bezpieczne?
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.