mivel csak a kiterjesztést nézi, ezért fel lehet tölteni, viszont nem fog lefutni, mert jpg kiterjesztése van, előnézetnél pedig semmit nem fogsz látni.
Fájlok feltöltése PHP használatával
Írta: lowert | 2009. július 14. | kategóriák: (X)HTML, Alapok, PHPA leírásban azt fogom bemutatni, hogy hogyan lehet elkészíteni egy egyszerű képfeltöltő rendszert PHP-ban. Először is, készítsük el az alábbi mappastruktúrát:

az “upload_files” mappa fogja tárolni a feltöltő rendszert, kód szempontjából mindegy, hogy mi a neve.
Az “uploads” mappa ad helyet a feltöltött fájljainknak, az “upload.php” pedig a rendszer motorjaként szolgál.
Az űrlap (HTML)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Fajlok feltoltese php-val</title> </head> <body> <form enctype="multipart/form-data" action="" method="post" /> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> <!--a feltöltött file maximális mérete 3mb--> <label for="file"> Válassz egy fájlt!</label><input id="file" type="file" name="file" /> <input type="submit" name="submit" value="Feltöltés!" /> </body> </html> |
Így néz ki:
![]()
PHP kód
Elérkezett az izgalmas rész, mégpedig a PHP kód megírása. A következő kódot illesszük a HTML forrás elejére:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < ?php if(isset($_POST['submit'])) { //ha megnyomtuk a feltöltés gombot $target= "uploads/"; //célmappa $file_name = $_FILES['file']['name']; //a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére) $tmp_dir = $_FILES['file']['tmp_name']; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk if(!preg_match('/(gif|jpe?g|png)$/i', $file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor... { echo "Rossz fajltipus!"; //... "dobjon el" egy hibát } else { move_uploaded_file($tmp_dir, $target . $file_name); //az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk) $feltoltve = true; //a feltoltve változó true értéket kap } } ?> |
Ahogy látható, lekorlátozzuk a feltölthető fájlokat képekre (gif-re, jpg/jpeg-re, png-re) a preg_match-et használva, tehát ha a fájl végén nem gif, jp(e)g vagy png van, akkor Rossz fájltípusra hivatkozva
meghíusul a feltöltés.
Most pedig vissza kell jeleznünk valamit a felhasználónak, tehát:
1 2 3 4 5 6 | < ?php if($feltoltve) { $utvonal = $target . $file_name; echo "Sikeresen feltöltötted a képet, megnézheted <a href="$utvonal">itt< /a>!"; } ?> |
A végeredmény, ha a fájlt sikerült feltölteni:

A biztos védelem érdeklében ilyen esetben szokták mondani, hogy a GD modul segítségével meg kell próbálni betölteni a képet. Ha hibát dob, akkor nem kép, hanem egy tetszőleges mime típusú átnevezett fájl.
persze, még millió féleképpen lehet növelni a biztonságot, ez csak egy alap szintű leírásnak lett szánva
Szia! A php kód 4. sora nem teljesen érthető számomra, el tudnád mondani, hogy mit kezdjek vele. Pontosan melyik részét kell átírni és mit írjak a helyére. Előre is köszönöm a választ.
Hol tudnék feltölteni PSD fájlt?
Ha valaki tudja akkor erre az e-mail cmire küldje:mucuska90@citromail.hu
Szia!
Remélem tudsz segíteni!
Az egyik oldalba a megfelelő helyre beraktam a html kódot, majd létrehoztam az uploader.php nevű fájlt, és az uploads nevű mappát. Mindet feltöltöttem az oldalhoz.
Tallózok, és feltöltés, de ekkor ezt írja ki:
“The requested method POST is not allowed for the URL /feltolt.html”
mit tudnék tenni, hogy rendesen működjön??? Az egész oldalt htmlben szerkesztem, és php-t most használok először…….:S:S:S
Remélem valakinek lesz egy hasznos hozzászólása!!!!!!!!
Szia!
Próbáld meg úgy, hogy feltolt.html-t átnevezed feltolt.php-ra ![]()
Remélem, mondanom sem kell, hogy ezt fel kell töltened egy szerverre, hogy lefusson.
A feltolt.html az a htmé oldal amiben a feltöltés van…. ahol el tudják érni a feltöltést…. miért cserélném ki feltolt.php-ra ha ilyen fájlom nincs is?
A tárhely nem ingyenes, és én nem állítottam be semmilyen szűrést!!
Hogyan lehet filterezni?
Félreértettél ![]()
Nem kell kicserélned, hanem át kell nevezned. Magyarul megnyitsz egy fájlkezelő programot (például Windows Intéző, Total Commander, Mac Finder stb). A feltolt.html fájlon jobb gombbal kattintasz, így megjelenik a legördülő menü. Kiválasztod az Átnevezés/Rename opciót, majd a feltolt.html-t átírod feltolt.php-ra. Azért nem működik a dolog nálad, mert a feltolt.html egy html file, amin belül nem lehet php kódokat futtatni (mint amilyen ez a feltöltő kód is), a megoldás: php file-ként kell elmenteni a dokumentumot. A php fileok nagyban hasonlítanak a HTML fileokhoz, tehát akármilyen HTML kódot beírhatsz egy .php file-ba, az ugyanúgy fog működni, viszont itt használhatod a php nyelven írt programokat is, mint például ezt a feltöltőt. Arra figyelj, hogy miután átnevezted, az összes olyan oldalban lévő linket át kell írnod, ami az eredeti feltolt.html-re hivatkozik, mostmár a feltolt.php-ra kell, hogy hivatkozzon.






Mi van akkor, ha pl. egy php file-nak adok .jpg kiterjesztést?