| | |
| 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 | Napísal wotan: 30.08.2007 21:54 | |
|
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 | Napísal suchy: 30.08.2007 22:27 | |
|
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 | Napísal autor témy wotan: 31.08.2007 0:06 | |
|
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 Bydlisko: BA - WESTSIDE | Napísal p360t: 31.08.2007 1:31 | |
|
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 | Napísal autor témy wotan: 31.08.2007 2:16 | |
|
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 Bydlisko: BA - WESTSIDE | Napísal p360t: 31.08.2007 2:32 | |
|
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 | Napísal autor témy wotan: 31.08.2007 11:07 | |
|
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 Bydlisko: BA - WESTSIDE | Napísal p360t: 31.08.2007 11:20 | |
|
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 | Napísal autor témy wotan: 31.08.2007 11:56 | |
|
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 Bydlisko: BA - WESTSIDE | Napísal p360t: 31.08.2007 12:04 | |
|
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 | Napísal autor témy wotan: 31.08.2007 12:54 | |
|
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 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 | Napísal autor témy wotan: 31.08.2007 13:21 | |
|
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 |
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 | Napísal autor témy wotan: 01.09.2007 20:48 | |
|
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 |
---|
| Kontrola textu z obrázka pred odoslaním formulára v Ostatné | 1 | 476 | 08.02.2008 14:56 stenley | | koncovka uploadnuteho suboru v PHP, ASP | 2 | 400 | 07.04.2010 14:48 neopagan | | Zmena nazvu uploadnuteho suboru v PHP, ASP | 19 | 824 | 13.09.2010 19:27 rover218 | | Pomoc s javascriptom v JavaScript, VBScript, Ajax | 1 | 394 | 02.05.2012 10:41 GoodWill | | Problem s javascriptom v JavaScript, VBScript, Ajax | 4 | 395 | 16.09.2012 19:19 Jame_s | | Načítanie .png z uploadnutého php ... v PHP, ASP | 13 | 534 | 12.01.2009 6:59 d0.0b | | problem s javascriptom FC8 v Operačné systémy Unix a Linux | 0 | 580 | 07.05.2009 18:38 tlacitko Enter | | Zavolanie php funkcie javascriptom v PHP, ASP | 6 | 742 | 24.08.2008 23:15 suchy | | Meno posledneho uploadnuteho suboru v zlozke? v PHP, ASP | 3 | 342 | 31.03.2010 19:12 rooobertek | | Výber posledného uploadnutého súboru z dir? v PHP, ASP | 6 | 488 | 13.12.2009 14:00 stenley | | Upozornenie pri HTML stránke Javascriptom v JavaScript, VBScript, Ajax | 3 | 2282 | 09.01.2019 15:36 martinius96 | | Formátovanie textu vypísaného JavaScriptom pomocou HTML v HTML, XHTML, XML, CSS | 6 | 989 | 15.09.2022 13:06 void | | Orezanie obrázka v Grafické programy | 3 | 1840 | 31.05.2019 10:41 void | | preload obrázka v JavaScript, VBScript, Ajax | 2 | 796 | 12.03.2008 10:18 mage | | Zmena obrázka v HTML, XHTML, XML, CSS | 1 | 528 | 04.10.2015 16:06 void | | otvorenie obrázka v JavaScript, VBScript, Ajax | 3 | 810 | 10.02.2008 18:30 jablko05 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|