Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja uploadu obrazka
japek
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
 
Start new topic
Odpowiedzi (1 - 16)
hwao
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Przeciez to co wkleiles skaluje obrazek (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

I zastosuj bbCode w swoim poscie.
Go to the top of the page
+Quote Post
Bizard
post
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...(IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
NuLL
post
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...(IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

Mam do Ciebie mala prosbe - nie pisz nic wiecej jak nie wiesz co piszesz.
Go to the top of the page
+Quote Post
japek
post
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
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
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
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...
Go to the top of the page
+Quote Post
japek
post
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
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
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
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Mozna przyjąć, że nigdy nazwa nie będzie taka sama?
Go to the top of the page
+Quote Post
huntercs
post
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 (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post
Prph
post
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
Post #16





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

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


nie (IMG:http://forum.php.pl/style_emoticons/default/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ą (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

Ten post edytował huntercs 27.03.2006, 18:12:16
Go to the top of the page
+Quote Post
Prph
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozostaje przy do-while (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdrawiam, Adrian.
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: 25.08.2025 - 01:11