Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zabezpieczenie uploadu zdjęć, Jeśli taka sama nazwa ...
marekpb
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

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


Witam
Chciałem zapytać, jak można zabezpieczyć skrypt uploadu zdjęć tak, aby kiedy pojawi się kolejne zdjęcie o takiej samej nazwie to np. zapisywało w innej nazwie ? Czy może lepiej zrobić, żeby automatycznie nazywały obrazy kolejno "obraz1", "obraz2", "obraz3" itp. ? Jeśli coś to jak można to zrobić ? Jakie wasze opinie i porady na ten temat ?

Oto mój niedoskonały kod. Jestem w trakcie nauki, ale staram się rozwijać ;] Pozdrawiam.
  1. $uploaddir = 'logo/';
  2.  
  3. if($_FILES['plik1']['error'] == UPLOAD_ERR_OK) {
  4. $new_name = $uploaddir.$_FILES['plik1']['name'];
  5. $trans = array("ą" => "a", "ć" => "c", "ę" => "e", "ł" => "l", "ń" => "n", "ó" => "o", "ś" => "s", "ż" => "z", "ź" => "z");
  6. $new = strtr($new_name, $trans);
  7. $temp_name = $_FILES['plik1']['tmp_name'];
  8. if($_FILES['plik1']['size'] < 307200) {
  9. if(move_uploaded_file($temp_name, $new)) {
  10.  
  11. //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  12. $img_path = $new;
  13.  
  14. //Tworzymy scieżkę do miniaturki
  15. $thumb_path = substr($img_path,0,strrpos($img_path,'.')).'.th.jpg';
  16.  
  17. //ustalamy maksymalny dopuszczalny rozmiar miniatury
  18. $max_width=$max_height=200;
  19.  
  20. //Sprawdzamy czy obraz istnieje
  21. if(!file_exists($img_path))die('<p>Plik obrazu nie istnieje</p>');
  22.  
  23. //Pobieramy informacjie o obrazie
  24. $img_attr = getimagesize($img_path);
  25.  
  26. //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość
  27. // i zmniejszamy odpowiednio rozmiar
  28. // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  29. if($img_attr[0]>$img_attr[1]){
  30. $scale = $img_attr[0] / $max_width;
  31. }else{
  32. $scale = $img_attr[1] / $max_height;
  33. }
  34.  
  35. //Tworzymy obraz miniaturki
  36. $w = floor($img_attr[0]/$scale);
  37. $h = floor($img_attr[1]/$scale);
  38. $thumb = imagecreatetruecolor($w,$h);
  39.  
  40. //Kopiujemy obraz pomniejszajac go,
  41. imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  42.  
  43. //Zapisujemy do pliku (jakość 85)
  44. imagejpeg($thumb,$thumb_path,85);
  45.  
  46. }
  47.  
  48. } else { echo "Za duży plik";}
  49.  
  50. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
bełdzio
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


zobacz ostatni punkt http://www.beldzio.com/bezpieczny-upload-plikow
Go to the top of the page
+Quote Post
Fafu
post
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

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


file_exists + rand
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A o md5_file poprzednicy nie słyszeli ? Robisz md5 dla pliku i to od razu może być nazwa tego pliku i będzie unikalna.
Go to the top of the page
+Quote Post
Unik2psc
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 27.07.2009

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


md5_file + dla pewnosci sprawdzasz czy taka nazwa istnieje, dla najwiekszej pewnosci
  1. for($i=0; $i>0; $i)
  2. {
  3. //kod sprawdzajacy jestli nazwa wolna wtedy
  4. $i = 1;
  5. }

//edit --- czepiasz sie szczegolow - chodzilo o sama logike ale cóż.

Ten post edytował Unik2psc 12.08.2009, 22:55:12
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Unik2psc @ 12.08.2009, 22:38:08 ) *
md5_file + dla pewnosci sprawdzasz czy taka nazwa istnieje, dla najwiekszej pewnosci
  1. for(i=0; i=1)
  2. {
  3. kod sprawdzajacy jestli nazwa wolna wtedy
  4. i = 1;
  5. }


A w jakim języku kod który dałeś?

Co do unikatowości może dać nawet md5 + microtime lub time.
Go to the top of the page
+Quote Post
gcdreak
post
Post #7





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

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


Jest wiele możliwości nadania unikatowej nazwy i z tego co czytam to każdy z Was podaje swoje sposoby.
Mimo wszystko najczęściej spotykam się ze sposobem
  1. md5( time( ) . $fileName )
Go to the top of the page
+Quote Post
ucho
post
Post #8





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


Tyle odpowiedzi i wszystkie błędne (IMG:style_emoticons/default/tongue.gif) Ze względu na wyścigi unikalną nazwę pliku może zapewnić tylko system operacyjny, jednocześnie z wygenerowaniem nazwy musi mieć miejsce stworzenie pliku. W php jest oczywiście do tego gotowa funkcja: "tempnam".
Go to the top of the page
+Quote Post
pyro
post
Post #9





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


...

  1. $uploaddir = 'logo/';
  2. $nazwa_pliku = 'obraz';
  3.  
  4. while(file_exists($uploaddir.$nazwa_pliku))
  5. {
  6. $i++;
  7. $nazwa_pliku .= $i;
  8. }
  9.  
  10. // Jeżeli jeszcze chcesz zachować rozszerzenie pliku, to już będzie dla Ciebie praca domowa :)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 10.10.2025 - 21:08