Forum forum.webPC.pl Strona Główna  
  forum.webPC.pl
FAQ  FAQ   Szukaj  Szukaj   Użytkownicy  Użytkownicy   Grupy  Grupy
 
Rejestracja  ::  Zaloguj Zaloguj się, by sprawdzić wiadomości
 
Forum forum.webPC.pl Strona Główna --> PHP, MySQL oraz inne bazy danych --> Upload plików na serwer

Napisz nowy temat  Odpowiedz do tematu
 Upload plików na serwer Zobacz poprzedni temat :: Zobacz następny temat --> 
Autor Wiadomość
pampper
PostWysłany: Wto Kwi 18, 2006 12:55 pm    Temat postu: Upload plików na serwer Odpowiedz z cytatem

Młodzieniec

Dołączył: 02 Mar 2006
Posty: 32

mam prośbę mogłbys mi pomóc, chce zeby moj skrypt upload przesyłał na serwer tylko pliki jpg i gif, zeby był bezpieczny od prób zawirusowania jakims exe albo innym skryptem. Ten skrypt jest pobrany z www.webpc.pl "Simple Upload"


<?php

$site_name = $_SERVER['HTTP_HOST'];
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir = "upload_files/";
$upload_url = $url_dir."/upload_files/";
$message ="";

//create upload_files directory if not exist
//If it does not work, create on your own and change permission.
if (!is_dir("upload_files")) {
die ("upload_files directory doesn't exist");
}

if ($_FILES['userfile']) {
$message = do_upload($upload_dir, $upload_url);
}
else {
$message = "Invalid File Specified.";
}

print $message;

function do_upload($upload_dir, $upload_url) {

$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_type = $_FILES['userfile']['type'];
$file_size = $_FILES['userfile']['size'];
$result = $_FILES['userfile']['error'];
$file_url = $upload_url.$file_name;
$file_path = $upload_dir.$file_name;

//File Name Check
if ( $file_name =="") {
$message = "Invalid File Name Specified";
return $message;
}
//File Size Check
else if ( $file_size > 70000) {
$message = "The file size is over 500K.";
return $message;
}
//File Type Check
else if ( $file_type == "text/plain" ) {
$message = "Sorry, You cannot upload any script file" ;
return $message;
}

$result = move_uploaded_file($temp_name, $file_path);
$message = ($result)?"File url <a href=$file_url>$file_url</a>" :
"Somthing is wrong with uploading a file.";

return $message;
}
?>
<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
Upload Image<input type="file" id="userfile" name="userfile">
<input type="submit" name="upload" value="Upload">
</form>
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Admin
PostWysłany: Wto Kwi 18, 2006 2:53 pm    Temat postu: Odpowiedz z cytatem

Admin strony i forum

Dołączył: 17 Kwi 2005
Posty: 708
Skąd: Reda

Ja bym to zrobił po swojemu:

Stworz plik wyslij.html:
Kod:

<html>
<head>
  <title>Wwysyłanie  plików</title>
</head>
<body>
Wysyłanie plików:
<form enctype="multipart/form-data" action="wyslij.php" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  Załaduj ten plik:<input name="plikuzytkownika" type="file">
  <input type="submit" value="Wyślij">
</form>
</body>
</html>


W linii
Kod:

<input type="hidden" name="MAX_FILE_SIZE" value="1000000">

ustaw zamiast 1000000 maksymalny rozmiar pliku. Uwaga! Wartośc ma być podana w bajtach!

Stworz plik wyslij.php
Kod:

<html>
<head>
  <title>Wysyłanie</title>
</head>
<body>
Wysyłanie pliku...
<?php

  if ($_FILES['plikuzytkownika']['error'] > 0)
  {
    echo 'Problem: ';
    switch ($_FILES['plikuzytkownika']['error'])
    {
      case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
      case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
      case 3: echo 'Wyslano tylko czesc pliku'; break;
      case 4: echo 'Nie wysłano pliku'; break;
    }
    exit;
  }

// sprawdzanie typu

  if ($_FILES['plikuzytkownika']['type'] != 'image/gif || $_FILES['plikuzytkownika']['type'] != 'image/jpeg')
  {
    echo 'Plik nie jest plikiem graficznym (gif/jpeg)';
    exit;
  }

// umieszczenie pliku
  $lokalizacja = '/wyslane/'.$_FILES['plikuzytkownika']['name'];

  if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
  {
     if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja))
     {
        echo 'Problem: Plik nie może być skopiowany do katalogu';
        exit;
     }
  }
  else
  {
    echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
    echo $_FILES['plikuzytkownika']['name'];
    exit;
  }

  echo 'Plik wysłany';
?>
</body>
</html>
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
pampper
PostWysłany: Sro Kwi 19, 2006 6:57 pm    Temat postu: Odpowiedz z cytatem

Młodzieniec

Dołączył: 02 Mar 2006
Posty: 32

zrobilem to co napisales i w momencie kiedy klikam yslij plik na serewe pojawia sie taki komunikat:

Parse error: parse error, unexpected T_STRING in /home/z1781/public_html/kap/wyslij.php on line 24
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Admin
PostWysłany: Sro Kwi 19, 2006 7:12 pm    Temat postu: Odpowiedz z cytatem

Admin strony i forum

Dołączył: 17 Kwi 2005
Posty: 708
Skąd: Reda

Zapomniałem o jednym znaku ' w lini 24 Wink

Poprawny (chyba) kod:
Kod:

<html>
<head>
  <title>Wysyłanie</title>
</head>
<body>
Wysyłanie pliku...
<?php

  if ($_FILES['plikuzytkownika']['error'] > 0)
  {
    echo 'Problem: ';
    switch ($_FILES['plikuzytkownika']['error'])
    {
      case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
      case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
      case 3: echo 'Wyslano tylko czesc pliku'; break;
      case 4: echo 'Nie wysłano pliku'; break;
    }
    exit;
  }

// sprawdzanie typu

  if ($_FILES['plikuzytkownika']['type'] != 'image/gif' || $_FILES['plikuzytkownika']['type'] != 'image/jpeg')
  {
    echo 'Plik nie jest plikiem graficznym (gif/jpeg)';
    exit;
  }

// umieszczenie pliku
  $lokalizacja = '/wyslane/'.$_FILES['plikuzytkownika']['name'];

  if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
  {
     if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja))
     {
        echo 'Problem: Plik nie może być skopiowany do katalogu';
        exit;
     }
  }
  else
  {
    echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: ';
    echo $_FILES['plikuzytkownika']['name'];
    exit;
  }

  echo 'Plik wysłany';
?>
</body>
</html>
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
pampper
PostWysłany: Sro Kwi 19, 2006 9:06 pm    Temat postu: Odpowiedz z cytatem

Młodzieniec

Dołączył: 02 Mar 2006
Posty: 32

a teraz jak wysyłam gif lub jpg to wyskakuje wysyłanie pliku...plik nie jest plikiem graficznym(jpeg/gif)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Admin
PostWysłany: Czw Kwi 20, 2006 7:12 am    Temat postu: Odpowiedz z cytatem

Admin strony i forum

Dołączył: 17 Kwi 2005
Posty: 708
Skąd: Reda

a ładuje go na serwer?

Sorry za takie zamieszanie, ale pisałem go na sucho - na forum - nie sprawdzałem

PS: Dla folderu ustaw chmod 777
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Napisz nowy temat  Odpowiedz do tematu Strona 1 z 1

Forum forum.webPC.pl Strona Główna --> PHP, MySQL oraz inne bazy danych --> Upload plików na serwer
Skocz do:  



Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
 
 


gabloty krajowe, wiaty kroll, aquai
Powered by phpBB Š 2001, 2002 phpBB Group