Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Walidacja uploadu obrazka
japek
post 24.03.2006, 10:11:33
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

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


Witam, czy da sie przed dodaniem obrazka na serwer sprawdzić jego szerokość i format aby przepuszczał tylko jpg bmp i gif'y? kombinowałem troche z getimagewidth ale coś nie idzie no i nie wiem jak sprawdzić rozszerzenie pliku sad.gif
Po dodaniu na serwer to już coś tam działa ale chciałbym przez upload'em aby zapobiec ładowania byle czego. Pozdrawiam
Go to the top of the page
+Quote Post
hwao
post 24.03.2006, 17:06:21
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




co do rozszerzenia
  1. <?php
  2. $sFile = 'costam.costa.jpg';
  3. $sEx = array_pop( explode( '.', $sFile ) );
  4. echo $sEx;
  5. ?>


Co do wielkosci to
  1. <?php
  2. $aInfo = getimagesize( $_FILES['nameInputa']['tmp_name'] );
  3. echo '<pre>'.print_r( $aInfo, true ).'</pre>';
  4. ?>
Go to the top of the page
+Quote Post
NuLL
post 24.03.2006, 19:50:14
Post #3





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Czlowieku - co ty za bzdety wklejasz questionmark.gif Przeciez to co wkleiles skaluje obrazek blink.gif

I zastosuj bbCode w swoim poscie.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Bizard
post 24.03.2006, 20:14:49
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 24.03.2006
Skąd: Anglia

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


czlowieku x2 -wiesz , dopisalem tam ze ma to po swojemu przerobic , a wystarczylo by tam zmienic 4 linijki a byl by dobry skrypt o który mu chodzilo...haha.gif
Go to the top of the page
+Quote Post
NuLL
post 24.03.2006, 20:20:19
Post #5





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Cytat(Bizard @ 2006-03-24 20:14:49)
czlowieku x2 -wiesz , dopisalem tam ze ma to po swojemu przerobic , a wystarczylo by tam zmienic 4 linijki a byl by dobry skrypt o który mu chodzilo...haha.gif

Mam do Ciebie mala prosbe - nie pisz nic wiecej jak nie wiesz co piszesz.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
japek
post 25.03.2006, 14:31:18
Post #6





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

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


  1. <?php
  2. $obrazek=$_GET["upload"];
  3. $szerokosc=imagesx($obrazek);
  4. if ($szerokosc>400) {
  5. $obrazek=FALSE;
  6. ?>


Taką walidacje zrobiłem no i wywala błąd "supplied argument is not a valid Image resource" co jest źle? chce zablokować możliwość wstawienia większego obrazka niz 400 pix.

Upload jest z formularza
  1. <input type="file" name="upload">


Ten post edytował japek 25.03.2006, 14:32:35
Go to the top of the page
+Quote Post
Vengeance
post 25.03.2006, 15:39:38
Post #7





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


$obrazek=$_GET["upload"];

przy plikach stosuje się $_FILES a nie $_GET
poczytaj o tym na php.net/upload


--------------------
Go to the top of the page
+Quote Post
japek
post 25.03.2006, 16:02:03
Post #8





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

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


Ale mi chodzi o ten error "supplied argument is not a valid Image resource" a co do GET a FILES to wiem tylko z get chciałem walidacje przed wrzucaniem zdjęcia do bazy, zresztą ten sam error jest jak sprawdzam po dodaniu do bazy :/ juz tyle kombinowałem i dalej nic - oczywiście dodawać zdjęcia i wyświetlać to luz ale chce aby nie dodawał większych niż x pix.
Go to the top of the page
+Quote Post
Balon
post 25.03.2006, 21:42:17
Post #9





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


blad Ci wywala bo sprawdza wymiary czegos co nie istnieje...


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
japek
post 25.03.2006, 22:26:02
Post #10





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Opole

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


dlatego pisze o tym ale juz sobie poradziłem bo tu widze o porade ciężko. Chciałem walidacje przez dodaniem na serwer, jednak chyba sie nie da więc zrobiłem po dodaniu.

EOT

Ten post edytował japek 25.03.2006, 22:26:38
Go to the top of the page
+Quote Post
Prph
post 27.03.2006, 09:54:46
Post #11





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


  1. <?php
  2.  
  3.  
  4. if(isset($_POST['submit']))
  5. {
  6. $boolError = false;
  7. $arrFile = $_FILES['photo_filename'];
  8.  
  9. if(empty($arrFile['name']))
  10. {
  11. $strErrorMsg .= ERROR_GALLERY_PHOTO_FILE;
  12. $boolError = true;
  13. }
  14.  
  15. if($arrFile['size'] > 102400)
  16. {
  17. $strErrorMsg .= ERROR_GALLERY_PHOTO_SIZE;
  18. $boolError = true;
  19. }
  20.  
  21. if(!$boolError)
  22. {
  23. $strSummary = addslashes($_POST['photo_name']);
  24. $intAlbumId = $_POST['album_id'];
  25.  
  26. if($arrFile['error'] > 0)
  27. {
  28. switch($arrFile['error'])
  29. {
  30. case 1:
  31. $strErrorMsg .= ERROR_GALLERY_PHOTO_SIZE;
  32. break;
  33.  
  34. case 2:
  35. $strErrorMsg .= ERROR_GALLERY_PHOTO_SIZE;
  36. break;
  37.  
  38. case 3:
  39. $strErrorMsg .= ERROR_GALLERY_PHOTO_BROKEN;
  40. break;
  41.  
  42. case 4:
  43. $strErrorMsg .= ERROR_GALLERY_PHOTO_EMPTY;
  44. break;
  45. }
  46. app_redirect(PATH_SERVER.'?load_module=gallery&action=photo_add&album_id='.$_POST['album_id'].'&msg='.$strErrorMsg);
  47. }
  48.  
  49. $arrFile['name'] = str_replace('ą', 'a', $arrFile['name']);
  50. $arrFile['name'] = str_replace('ę', 'e', $arrFile['name']);
  51. $arrFile['name'] = str_replace('ó', 'o', $arrFile['name']);
  52. $arrFile['name'] = str_replace('ł', 'l', $arrFile['name']);
  53. $arrFile['name'] = str_replace('ż', 'z', $arrFile['name']);
  54. $arrFile['name'] = str_replace('ź', 'z', $arrFile['name']);
  55. $arrFile['name'] = str_replace('ń', 'n', $arrFile['name']);
  56. $arrFile['name'] = str_replace('ć', 'c', $arrFile['name']);
  57. $arrFile['name'] = str_replace('ś', 's', $arrFile['name']);
  58.  
  59. $strPath = PATH_GALLERY.$intAlbumId.'/';
  60.  
  61. $strFileName = change_file_name($arrFile['name'], $strPath);
  62. $resDir = opendir($strPath);
  63.  
  64. if(!$resDir)
  65. {
  66. $strErrorMsg .= ERROR_GALLERY_PHOTO_OPEN_DIR;
  67. app_redirect(PATH_SERVER.'?load_module=gallery&action=photo_add&album_id='.$_POST['album_id'].'&msg='.$strErrorMsg);
  68. }
  69.  
  70. $strDest = $strPath.$strFileName;
  71.  
  72. $strDestMin = $strPath.'min/'.$strFileName;
  73.  
  74. if(is_uploaded_file($arrFile['tmp_name']))
  75. {
  76. if(!move_uploaded_file($arrFile['tmp_name'], $strDest))
  77. {
  78. $strErrorMsg .= ERROR_GALLERY_PHOTO_COPY;
  79. app_redirect(PATH_SERVER.'?load_module=gallery&action=photo_add&album_id='.$_POST['album_id'].'&msg='.$strErrorMsg);
  80. }
  81.  
  82. ?>


Framgemt mojego starego kodu. Na poczatku sprawdza czy przeslano plik. Nastepnie sprawdza Errory - te dodane przez php. Pozniej zamienia polskie na zwykle znaki. Na koncu przenosi do odpowiedniego katalogu.
Go to the top of the page
+Quote Post
huntercs
post 27.03.2006, 11:30:33
Post #12





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 6.02.2005

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


zamiast usywać polskie znaki, spacje i inne specjanle znaki wolę tworzyć unikalne nazwy np.:
  1. <?php
  2. $filename = md5(uniqid(rand(), true));
  3. ?>

czy coś w tym stylu


--------------------


Go to the top of the page
+Quote Post
Prph
post 27.03.2006, 15:45:17
Post #13





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Przyznam, że naprawdę dobre smile.gif
Mozna przyjąć, że nigdy nazwa nie będzie taka sama?
Go to the top of the page
+Quote Post
huntercs
post 27.03.2006, 17:52:04
Post #14





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 6.02.2005

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


jest takie prawdopobobieństwo więc najlepiej zorbić prostą rekurencyjną funkcje:
  1. <?php
  2. function GetUniqueName();
  3. {
  4. $filename = md5(uniqid(rand(), true));
  5. if(file_exists($filename)) GetUniqueName();
  6. else return $filename;
  7. }
  8. $name=GetUniqueName();
  9. ?>

i nazwy będą unikatowe guitar.gif


--------------------


Go to the top of the page
+Quote Post
Prph
post 27.03.2006, 18:01:30
Post #15





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Czemu rekurencja? Nie lepiej na do-while?
Go to the top of the page
+Quote Post
huntercs
post 27.03.2006, 18:11:06
Post #16





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 6.02.2005

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


nie smile.gif, generalnie chodzi o to że za pierwszym razem będzie już losował unikatową nazwę (małe prawdopodobieństwo że już taka istnieje), później sprawdza czy przypadkiem nie istnieje już plik o takiej nazwie i zwraca nazwę, nie potrzebne do while(), a pozatym można zapoznać się z rekurencją rolleyes.gif

Ten post edytował huntercs 27.03.2006, 18:12:16


--------------------


Go to the top of the page
+Quote Post
Prph
post 28.03.2006, 06:22:09
Post #17





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Wlasnie dlatego do-while. w warunku dajesz czy plik istnieje a w ciele petli zmieniasz nazwe winksmiley.jpg W idealnym przypadku wykona sie dokladnie raz.

Rekurencja moim zdaniem wprowadza troche zamieszania. Cale szczescie, ze to jest tak banalny przyklad jej wykorzystania, ze nie trtzeba wysilac tego glowy. Mialem w poprzednim semestrze wyklady z Ady i tam facet pokazywal nam rekurencje - tamte byly hardcorowe winksmiley.jpg

Pozostaje przy do-while winksmiley.jpg

Pozdrawiam, Adrian.
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: 13.06.2025 - 15:45