Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]zabezpieczenia uploadu
dark_root
post 26.06.2008, 11:48:59
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


Witam. Mam taki sktypt uploadu
Kod
<?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 > 500000) {
         $message = "The file size is over 500K.";
         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;


}

?>
<table><TR><TD>
<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>

Jednak chcialbym zabezpieczyć go, żeby można było wysłąć tylko pliki z rozrzeszeniami np. jpg i żeby byla automatycznie nadawana nazwa plikowi np. jesli ostatni plik to byl 1.jpg to temu zmienia nazwe na 2.jpg. Wiem, że podobne tematy były na forum, ale żaden do końca nie pasuje. Z góry dziękuje za wszelką pomoc.
Go to the top of the page
+Quote Post
xbigos
post 26.06.2008, 14:56:19
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


naprosciej by było.

Jeśli chcesz żeby dodawano tylko pliki o rozszerzeniu jpg skorzystaj z konstrukcji warunkowej oraz poczytaj o http://pl2.php.net/eregi

a jesli chcesz zeby nadawalo nazwe kolejną
to wylistuj sobie katalog pobierz najwieksza wartosc korzystając z explode i jesli bedziesz miał numerowane pliki wtedy zrobisz sobie $nazwaPliku++; i masz gotowe.


--------------------
Go to the top of the page
+Quote Post
DarkItachiPL
post 26.06.2008, 15:02:00
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 26.06.2008

Ostrzeżenie: (0%)
-----


Siem! Nie jestem pro, ale pomogę Ci jeśli sobie jeszcze z tym skryptem nie poradziłeś...
Co do typów... Tu masz przykład jak to rozwiązać:
  1. <?php
  2. if ($file_type == "image/jpeg") {
  3. // tu kod jeśli jest format pliku jpg
  4. }
  5. else {
  6. die("Można używać tylko formatów .jpeg i .jpg !!");
  7. }
  8. ?>


A z tym drugim to ja kiedyś poradziłem sobie tak(to przykład, reszte sam pomodyfikujesz itd.):
  1. <?php
  2. $id = file_get_contents("id.txt");
  3. $id++;
  4. unlink("id.txt"); 
  5. $file = "id.txt";
  6. $fp = fopen($file, "r+"); 
  7. flock($fp, 2);
  8. fwrite($fp, $id);
  9. flock($fp, 3);
  10. fclose($fp);
  11. $temp_name = $id.".jpg";
  12. ?>


I ja bym te kody dał pod:
  1. <?php
  2. $temp_name = $_FILES['userfile']['tmp_name']; 
  3.  $file_name = $_FILES['userfile']['name']; 
  4.  $file_type = $_FILES['userfile']['type']; 
  5.  $file_size = $_FILES['userfile']['size']; 
  6.  $result = $_FILES['userfile']['error']; 
  7.  $file_url = $upload_url.$file_name; 
  8.  $file_path = $upload_dir.$file_name;
  9. ?>


Jak już mówiłem... nie jestem pr0 więc to nie jest zbyt "pr0" biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 22:07