Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zabezpieczenia uploadu
Forum PHP.pl > Forum > Przedszkole
dark_root
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.
xbigos
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.
DarkItachiPL
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
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.