Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
Mam na stranke formular, ktoreho sucastou je aj upload obrazku. Vie mi niekto poradit, ako skontrolujem nasledovne? :
1) aby obrazok bol iba vo formate .jpg
2) velkost obrazka max. 200 kB
3) rozmery max. 200 x 150 px
Nechcem to riesit cez php po odoslani formulara, ale javascriptom este pred odoslanim.
Ten upload vo forme HTML vyzera takto: Kód: <form enctype="multipart/form-data" action="upload.php" method="post" onsubmit="return validate()">
Vložiť obrázok (max. 500kB)</font> <input type="hidden" name="MAX_FILE_SIZE" value="204800" /> Vyber súbor v počítači <input name="subor" type="file" />
Dakujem!
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | 17 |
ak to chces ochranit budes to musiet pomocou php osetrit aj tak. ochrana javascriptom nieje ochrana, kedze ju hocikedy mozes vypnut.
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
Na zaciatku stranky mam kontrolu, ci uzivatel ma alebo nema zapnuty javascript a upozorni ho, aby si ho zapol ... ale o to nejde. Jednoducho to chcem osetrit scriptom PRED odoslanim, pretoze po odoslani ked obrazok skontrolujem php scriptom a nema spravne parametre, musi sa vratit spat na stranku s formularom a znovu ho vyplnit ... a to nechcem! Tak poradi mi niekto?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Môžeš si tie "zlé" zarametre nechať a predvyplniť nimi ten formulár. Osobne nepoznám spôsob, akým by JavaScript mohol binárne analyzovať súbor, aby zistil, či sa naozaj jedná o JPG obrázok, alebo aké má rozlíšenie. Ostatné veci by sa možno aj nejak dali, môžeš sa pozrieť sem http://www.w3schools.com/js/default.asp .
Inak, ani to upozornenie ťa neochráni pred nutnosťou implementovať PHP kontrolu zadaných údajov, pretože "útočník" si môže nechať zapnutý JS, uložiť si stránku do počítača, pozmeniť jej kód (zmazať JavaScript) a vyplniť ju záškodníckymi údajmi a odoslať na tvoj server. Môže tak dokonale obísť akúkoľvek ochranu založenú na klientských skriptoch, bez väčšej námahy.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
tak dobre teda, mozno to php bude lepsie. Vie mi teda niekto poradit taky script, co by testoval len tieto zakladne veci v php:
1) aby obrazok bol iba vo formate .jpg
2) velkost obrazka max. 200 kB
3) rozmery max. 200 x 150 px
A ked php script zisti chybu /ak nesedi niektora z poziadavok/, ako sa vrati naspat k formularu?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Tvoje tri veci:
Kód: if (isset($_FILES['foto'])){ if (exif_imagetype($_FILES['foto']['tmp_name']) != IMAGETYPE_JPEG){ echo "Toto nie je JPG/JPEG obrázok!"; exit(); } else { if ($_FILES['foto']['size'] > 200000 ) { echo "Príliš veľká fotografia (dátovo)! Fotografie nesmú mať viac ako 200 KB."; exit(); } else { $foto=$_FILES['foto']['name']; $ciel = "../nejaka/cesta/k/priecinku/s/fotkami/".$foto; $nazov_suboru = $_FILES['foto']['tmp_name']; move_uploaded_file($nazov_suboru, $ciel) or die ("Subor sa nedá uloziť"); list($width, $height) = getimagesize($ciel); if ($width > "200" || $height > "150"){ echo "Príliš veľká fotografia (rozmermi)! Fotografie nesmú mať viac ako 200px x 150px"; exit(); } else { echo "Tvoj obrázok všetko splnil, gratulujem :)"; } } } }
Keď skript zistí chybu a chce sa vrátiť k formuláru, má na to viacero spôsobov. Buď si chybné dáta uloží do databázy, cookies alebo URL a presmeruje skript na stránku s formulárom. Tam bude iný skript, ktorý skontroluje, či nie sú nejaké chybné dáta v databázi/cookies/URL a ak sú, tak ich zobrazí. To je princíp, kód si hádam napíšeš aj sám. Viac na http://php.vrana.cz/informovani-uzivate ... perace.php
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
vyskusal som ten tvoj kod, co si napisal, ale neviem kde je chyba, mne totiz stale vypisuje ze Toto nie je JPG/JPEG obrázok, aj ked som vlozil .jpg!
Vo formulari mam nasledovne: Kód: <form enctype="multipart/form-data" action="upload.php" method="post" onsubmit="return validate()"><input type="hidden" name="MAX_FILE_SIZE" value="30000" /> Vyber súbor v poèítaèi <input name="foto" type="file" /><br> no a do upload.php som dal toto Kód: <? if (isset($_FILES['foto'])){ if (exif_imagetype($_FILES['foto']['tmp_name']) != IMAGETYPE_JPEG){ echo "Toto nie je JPG/JPEG obrázok!"; exit(); } else { if ($_FILES['foto']['size'] > 200000 ) { echo "Príliš velká fotografia (dátovo)! Fotografie nesmú mat viac ako 200 KB."; exit(); } else { $foto=$_FILES['foto']['name'];
$ciel = "obr/".$id. $foto; //toto som zmenil - k nazvu priradi ID $obr = $ciel; $nazov_suboru = $_FILES['foto']['tmp_name']; move_uploaded_file($nazov_suboru, $ciel) or die ("Subor sa nedá ulozit"); list($width, $height) = getimagesize($ciel); if ($width > "200" || $height > "150"){ echo "Príliš velká fotografia (rozmermi)! Fotografie nesmú mat viac ako 200px x 150px"; exit(); } else { echo "Tvoj obrázok všetko splnil, gratulujem :)"; } } } }
Nevies, kde moze byt problem?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Máš nainštalovanú EXIF knižnicu (to zistíš cez phpinfo(); )?
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
EXIF Support enabled
EXIF Version 1.4 $Id: exif.c,v 1.118.2.37.2.4 2006/01/01 13:46:52 sniper Exp $
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Skúsime to s inou funkciou:
Kód: if (isset($_FILES['foto'])){ list($width, $height, $type) = getimagesize($_FILES['foto']['tmp_name']); if ($type) != IMAGETYPE_JPEG){ echo "Toto nie je JPG/JPEG obrázok!"; exit(); } elseif ($width > "200" || $height > "150"){ echo "Príliš velká fotografia (rozmermi)! Fotografie nesmú mat viac ako 200px x 150px"; exit(); } else { if ($_FILES['foto']['size'] > 200000 ) { echo "Príliš velká fotografia (dátovo)! Fotografie nesmú mat viac ako 200 KB."; exit(); } else { $foto=$_FILES['foto']['name']; $ciel = "obr/".$id. $foto; //toto som zmenil - k nazvu priradi ID $obr = $ciel; $nazov_suboru = $_FILES['foto']['tmp_name']; move_uploaded_file($nazov_suboru, $ciel) or die ("Subor sa nedá ulozit"); echo "Tvoj obrázok všetko splnil, gratulujem :)"; } } }
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
No, v tomto pripade my vypisuje chybu Kód: Parse error: syntax error, unexpected T_IS_NOT_EQUAL Mozno som len prehliadol nejaku chybu, alebo neviem. Musi to nejko fungovat! Nevzdavam sa este ...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Kód: if ($type) != IMAGETYPE_JPEG)
tu je jedna zatvorka naviac...
|
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
Sakra! zatvorka, mas pravdu!!! Uz sme sa posunuli kusok vpred ...
Tak teraz to prebieha takto: Vlozil som velky subor .jpg /vacsie rozmery, vacsia velkost/, a script vypisal opat, ze Toto nie je JPG/JPEG obrázok! Ked som vsak vlozil ten isty obrazok, len zmenseny /mensi rozmer, menej kB/, vypisalo ze splnilo vsetko a obrazok sa odoslal v poriadku. Neviem vsak preco pri velkom obrazku vypise, ze to nie je JPG.
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 | 96 |
dufajme že si odstránil správnu zátvorku ... mal si odstraniť tú prvú ... teda
[code]
if ($type != IMAGETYPE_JPEG)
|
|
Registrovaný: 30.08.07 Prihlásený: 18.02.11 Príspevky: 108 Témy: 28 | 28 |
Ano, script mi uz konecne funguje !!! Velmi ste mi pomohli! DAKUJEM!
|
|
Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Ostatné | 1 | 515 | 08.02.2008 14:56 stenley | | v PHP, ASP | 2 | 436 | 07.04.2010 14:48 neopagan | | v PHP, ASP | 19 | 883 | 13.09.2010 19:27 rover218 | | v JavaScript, VBScript, Ajax | 4 | 442 | 16.09.2012 19:19 Jame_s | | v JavaScript, VBScript, Ajax | 1 | 442 | 02.05.2012 10:41 GoodWill | | v PHP, ASP | 13 | 571 | 12.01.2009 6:59 d0.0b | | v PHP, ASP | 6 | 787 | 24.08.2008 23:15 suchy | | v Operačné systémy Unix a Linux | 0 | 628 | 07.05.2009 18:38 tlacitko Enter | | v PHP, ASP | 6 | 534 | 13.12.2009 14:00 stenley | | v PHP, ASP | 3 | 377 | 31.03.2010 19:12 rooobertek | | v JavaScript, VBScript, Ajax | 3 | 2839 | 09.01.2019 15:36 martinius96 | | v HTML, XHTML, XML, CSS | 6 | 1269 | 15.09.2022 13:06 void | | v Grafické programy | 3 | 717 | 07.05.2009 17:56 Dudko | | v JavaScript, VBScript, Ajax | 3 | 612 | 22.11.2012 14:37 BX | | v Grafické programy | 3 | 1945 | 31.05.2019 10:41 void | | v JavaScript, VBScript, Ajax | 2 | 806 | 22.01.2008 12:46 mirec23 |
|