ugrás a tartalomhoz

képfeltöltő,

almasiweb · 2012. Május. 12. (Szo), 21.12
Üdv!
Csináltunk suliba egy kép feltöltőt használnám is a weblabomon jól működik csak egy apróság van, hogy lehet azt kivédeni hogy ha én felrakok egy képet akkor azt más ugyanazzal a fájl névvel,ne tudjon felrakni (így ne tudja az ő képit cserélni)?
  1. <html>  
  2. <body bgcolor="336699"><font color="ffffff">  
  3. <form  method="POST" enctype="multipart/form-data">  
  4.   
  5. <input type="file" name="kep" />  
  6. <input type="Submit" name="submit" value="Feltöltés">  
  7.   
  8. </form>  
  9.   
  10. <?php  
  11.   
  12. function removeaccent($str){  
  13.     $search  = array("á""é""í""ó""ö""ő""ú""ü""ű"" ");  
  14.     $replace = array("a""e""i""o""o""o""u""u""u""_");  
  15.     return str_replace($search$replace$str);  
  16. }  
  17.   
  18. $types = array("jpg""jpeg""gif""png");    // engedélyezett kiterjesztések  
  19. $maxsize = 3145728;                             // maximális méret (1 MB)1048576  
  20. $target = "upload";                         // végleges hely  
  21. // feltöltés ellenőrzése  
  22. if ($_FILES["kep"]["name"] == ""){  
  23.     print "Nem töltöttél fel képet!";  
  24.     echo('<br>');  
  25. }  
  26. else{  
  27.     $upload = true;  
  28.     $name = removeaccent($_FILES["kep"]["name"]);  
  29.     // kiterjesztés ellenőrzése  
  30.     $ext = strtolower(array_pop(explode("."$name)));  
  31.     if (!in_array($ext$types)){  
  32.         print "Csak kép tölthető fel!";  
  33.         $upload = false;  
  34.     }  
  35.     // méret ellenőrzése  
  36.     if ($_FILES["kep"]["size"] > $maxsize){  
  37.         print "Túl nagy a fájl mérete!";  
  38.         $upload = false;  
  39.     }  
  40.     // áthelyezés  
  41.     if ($upload){  
  42.         move_uploaded_file($_FILES["kep"]["tmp_name"], $target."/".$name);  
  43.     }  
  44. }  
  45. print("Név: ").($name).('<br>');  
  46. print("Méret: ").($_FILES[kep][size]).('<br>');  
  47. print("Típus: ").($_FILES[kep][type]).('<br>');  
  48.   
  49. echo("<a href=$target/$name><input type=button value=Megtekint></a>");  
  50.   
  51. ?>  
  52. </font></body></html>  
Köszönöm előre is!
 
1

Ellenőrizni

Poetro · 2012. Május. 12. (Szo), 21.20
Ellenőrizni kell, hogy a feltöltendő fájl létezik-e, és ha igen, akkor valami kerülő megoldást kell csinálni. Mondjuk más néven kell elmenteni a fájlt.
2

file_exists

_subi_ · 2012. Május. 13. (V), 12.40
Ellenőrizd a fájl létezését a file_exists függvénnyel!
3

rendben köszönöm, de esetleg

almasiweb · 2012. Május. 14. (H), 13.11
rendben köszönöm, de esetleg egy kódot is tudnátok hozzá mutatni? mert én még nem rég keztük a suliban és kb csak annyit tudok amit ott tanultunk.

Köszönöm előre is!
5

Ha kódot most nem is,

Pepita · 2012. Május. 14. (H), 16.22
de egy kis plussz:
Az említett file_exists fv-el azt a $target."/".$name fájlnevet ellenőrizd, ami az átmozgatás célja. Ha létezik (true), dobj hasonló hibaüzit, mint az előtte levő ellenőrzésekkor.

Ékezetes karakterek cseréje: ha biztosra akarsz menni (ugye igen!), akkor jobb megoldás a megengedett karaktereket tenni egy tömbbe, a feltöltött fájlnéven végigiterálsz karakterenként, és ami nincs a megengedett tömbben, azt kicseréled vmire vagy törlöd. (Vagy, ha rövidpórázt adsz csak a Júzernek, akkor visszadobod hibaüzivel, de ez nem felhasználóbarát.)
4

Szerintem mindig adj hozzá

kuka · 2012. Május. 14. (H), 13.44
Szerintem mindig adj hozzá vagy egy sorszámot, vagy egy véletlen számot. Tehát amit például almasiweb.jpg néven töltenek fel, azt te almasiweb-1.jpg vagy almasiweb-154249006.jpg tárolnád. Nagyjából minden nyilvános kép feltöltő esetében így működik.

Ettől függetlenül a bejelentkezett tagok számára létezhet saját könyvtár, oda csak ők tölthetnek fel és ami abban van azt felülírhatják. De ez gondolom egy későbbi bővítés lenne.

A removeaccent() függvény lehet kissé naiv meg kissé hiányos.
  • Mi van ha valaki lengyel származású, Lech Wałęsának hívják és a fényképét a saját nevével és az anyanyelve helyesírásával elnevezve tölti fel?
  • Ha mindez Windows operációs rendszeren talál futni, akkor például a „:”-ot (meg pár más karaktert) is ki kell irtani az állománynévből.
  • Mivel a nagybetűket nem kezeled külön, talán a str_ireplace() jobb választás volna a csere megejtéséhez.
6

Ékezetmentesítés (és egyéb különleges karakterek)

pkadam · 2012. Május. 14. (H), 18.13
Nálunk az alábbi két függvény végzi az ékezetes és különleges karakterek cseréjét. Használd nyugodtan, ha jól jön!
  1. function remove_accent($str) {  
  2.     $a = array('À''Á''Â''Ã''Ä''Å''Æ''Ç''È''É''Ê''Ë''Ì''Í''Î''Ï''Ð''Ñ''Ò''Ó''Ô''Õ''Ö''Ø''Ù''Ú''Û''Ü''Ý''ß''à''á''â''ã''ä''å''æ''ç''è''é''ê''ë''ì''í''î''ï''ñ''ò''ó''ô''õ''ö''ø''ù''ú''û''ü''ý''ÿ''Ā''ā''Ă''ă''Ą''ą''Ć''ć''Ĉ''ĉ''Ċ''ċ''Č''č''Ď''ď''Đ''đ''Ē''ē''Ĕ''ĕ''Ė''ė''Ę''ę''Ě''ě''Ĝ''ĝ''Ğ''ğ''Ġ''ġ''Ģ''ģ''Ĥ''ĥ''Ħ''ħ''Ĩ''ĩ''Ī''ī''Ĭ''ĭ''Į''į''İ''ı''IJ''ij''Ĵ''ĵ''Ķ''ķ''Ĺ''ĺ''Ļ''ļ''Ľ''ľ''Ŀ''ŀ''Ł''ł''Ń''ń''Ņ''ņ''Ň''ň''ʼn''Ō''ō''Ŏ''ŏ''Ő''ő''Œ''œ''Ŕ''ŕ''Ŗ''ŗ''Ř''ř''Ś''ś''Ŝ''ŝ''Ş''ş''Š''š''Ţ''ţ''Ť''ť''Ŧ''ŧ''Ũ''ũ''Ū''ū''Ŭ''ŭ''Ů''ů''Ű''ű''Ų''ų''Ŵ''ŵ''Ŷ''ŷ''Ÿ''Ź''ź''Ż''ż''Ž''ž''ſ''ƒ''Ơ''ơ''Ư''ư''Ǎ''ǎ''Ǐ''ǐ''Ǒ''ǒ''Ǔ''ǔ''Ǖ''ǖ''Ǘ''ǘ''Ǚ''ǚ''Ǜ''ǜ''Ǻ''ǻ''Ǽ''ǽ''Ǿ''ǿ');  
  3.     $b = array('A''A''A''A''A''A''AE''C''E''E''E''E''I''I''I''I''D''N''O''O''O''O''O''O''U''U''U''U''Y''s''a''a''a''a''a''a''ae''c''e''e''e''e''i''i''i''i''n''o''o''o''o''o''o''u''u''u''u''y''y''A''a''A''a''A''a''C''c''C''c''C''c''C''c''D''d''D''d''E''e''E''e''E''e''E''e''E''e''G''g''G''g''G''g''G''g''H''h''H''h''I''i''I''i''I''i''I''i''I''i''IJ''ij''J''j''K''k''L''l''L''l''L''l''L''l''l''l''N''n''N''n''N''n''n''O''o''O''o''O''o''OE''oe''R''r''R''r''R''r''S''s''S''s''S''s''S''s''T''t''T''t''T''t''U''u''U''u''U''u''U''u''U''u''U''u''W''w''Y''y''Y''Z''z''Z''z''Z''z''s''f''O''o''U''u''A''a''I''i''O''o''U''u''U''u''U''u''U''u''U''u''A''a''AE''ae''O''o');  
  4.     return str_replace($a$b$str);  
  5. }  
  6.   
  7. function slugString($str) {  
  8.     return strtolower(preg_replace(array('/[^a-zA-Z0-9_ -]/''/[ -]+/',  '/[_-]+/''/^-|-$/'), array('''-''-'''), remove_accent($str)));  
  9. }  
7

nálunk így szokás

joed · 2012. Május. 15. (K), 10.06
  1. /** 
  2.  * Removes accents from string 
  3.  *  
  4.  * @param string $v 
  5.  * @return string 
  6.  */  
  7. public static function removeAccents($v){  
  8.     $trt = array(  
  9.         'Ű'=>'U''ű'=>'u''Ő'=>'O''ő'=>'o'"Ž"=> "Z""ž"=>"z"  
  10.     );  
  11.     $v = preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i''$1', htmlentities($v, ENT_QUOTES, 'UTF-8'));  
  12.     $v = html_entity_decode($v, ENT_QUOTES, 'UTF-8');  
  13.     $v = strtr($v$trt);  
  14.   
  15.     return $v;  
  16. }  
  17.   
  18. /** 
  19.  * Makes a safe short URI string by stripping and replacing inappropriate characters. 
  20.  * 
  21.  * @param string $v String to be converted to safe short URI. 
  22.  * @return string 
  23.  */  
  24. public static function makeSURI($v){  
  25.     $v = self::removeAccents($v);  
  26.     $v = strtolower($v);  
  27.     $v = trim(preg_replace('/[\W\s]/''-'$v));  
  28.   
  29.     return $v;  
  30. }  
8

Kurta

Poetro · 2012. Május. 15. (K), 10.17
Hát a te kódod elég kurta, és a fenti Lech Wałęsa nevet pont nem kezeli sehogyan (vagyis lech-wa----sa-ra alakítja, ami azért köszönő viszonyban sincs az eredetivel, valamint az UTF-8 karaktereket is szépen elrontja az strtolower esetleg).
9

thnx

joed · 2012. Május. 15. (K), 10.56
Kösz a kommenteket :)
10

Köszönöm a válaszokat és a

almasiweb · 2012. Május. 21. (H), 18.49
Köszönöm a válaszokat és a segítséget!

Kicsit megkésve de sajnos weblapot kellet költöztetni ami nem kis munka.