[ Príspevkov: 15 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

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!


Offline

Čestný člen
Čestný člen
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 17.10.06
Prihlásený: 08.01.11
Príspevky: 1757
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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 0:06 | kontrola uploadnuteho obrazka javascriptom

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 2:16 | kontrola uploadnuteho obrazka javascriptom

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 11:07 | kontrola uploadnuteho obrazka javascriptom

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 11:56 | kontrola uploadnuteho obrazka javascriptom

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


Offline

Skúsený užívateľ
Skúsený užívateľ
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 12:54 | kontrola uploadnuteho obrazka javascriptom

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 ...


Offline

Správca fóra
Správca fóra
kontrola uploadnuteho obrazka javascriptom

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32

Kód:
if ($type) != IMAGETYPE_JPEG)

tu je jedna zatvorka naviac...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 31.08.2007 13:21 | kontrola uploadnuteho obrazka javascriptom

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96

dufajme že si odstránil správnu zátvorku ... mal si odstraniť tú prvú ... teda
[code]
if ($type != IMAGETYPE_JPEG)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.08.07
Prihlásený: 18.02.11
Príspevky: 108
Témy: 28 | 28
Napísal autor témyOffline : 01.09.2007 20:48 | kontrola uploadnuteho obrazka javascriptom

Ano, script mi uz konecne funguje !!! Velmi ste mi pomohli! DAKUJEM!


 [ Príspevkov: 15 ] 


kontrola uploadnuteho obrazka javascriptom



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Kontrola textu z obrázka pred odoslaním formulára

v Ostatné

1

337

08.02.2008 14:56

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s javascriptom

v JavaScript, VBScript, Ajax

4

141

16.09.2012 19:19

Jame_s

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc s javascriptom

v JavaScript, VBScript, Ajax

1

157

02.05.2012 10:41

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

Zavolanie php funkcie javascriptom

v PHP, ASP

6

519

24.08.2008 23:15

suchy

V tomto fóre nie sú ďalšie neprečítané témy.

problem s javascriptom FC8

v Operačné systémy Unix a Linux

0

349

07.05.2009 18:38

tlacitko Enter

V tomto fóre nie sú ďalšie neprečítané témy.

koncovka uploadnuteho suboru

v PHP, ASP

2

225

07.04.2010 14:48

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena nazvu uploadnuteho suboru

v PHP, ASP

19

562

13.09.2010 19:27

rover218

V tomto fóre nie sú ďalšie neprečítané témy.

Načítanie .png z uploadnutého php ...

v PHP, ASP

13

371

12.01.2009 6:59

d0.0b

V tomto fóre nie sú ďalšie neprečítané témy.

Výber posledného uploadnutého súboru z dir?

v PHP, ASP

6

314

13.12.2009 14:00

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Meno posledneho uploadnuteho suboru v zlozke?

v PHP, ASP

3

168

31.03.2010 19:12

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

Efekt obrazka

v JavaScript, VBScript, Ajax

8

942

20.07.2008 1:14

emer

V tomto fóre nie sú ďalšie neprečítané témy.

upload obrazka

v PHP, ASP

16

801

10.03.2010 19:03

vputin

V tomto fóre nie sú ďalšie neprečítané témy.

velkost obrazka

v Grafické programy

3

438

07.05.2009 17:56

Dudko

V tomto fóre nie sú ďalšie neprečítané témy.

Zatrasenie obrazka

v JavaScript, VBScript, Ajax

3

292

22.11.2012 14:37

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena obrázka

v HTML, XHTML, XML, CSS

1

178

04.10.2015 16:06

void

V tomto fóre nie sú ďalšie neprečítané témy.

POZICIA OBRAZKA

v JavaScript, VBScript, Ajax

2

507

22.01.2008 12:46

mirec23



© 2005 - 2017 PCforum, edited by JanoF