[ 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: 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.
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: 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.
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: 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.
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: 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.
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: 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.
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: 3948
Témy: 51 | 51
Bydlisko: Bratislava

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: 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)


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

515

08.02.2008 14:56

stenley

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

koncovka uploadnuteho suboru

v PHP, ASP

2

436

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

883

13.09.2010 19:27

rover218

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

Problem s javascriptom

v JavaScript, VBScript, Ajax

4

442

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

442

02.05.2012 10:41

GoodWill

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

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

v PHP, ASP

13

571

12.01.2009 6:59

d0.0b

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

Zavolanie php funkcie javascriptom

v PHP, ASP

6

787

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

628

07.05.2009 18:38

tlacitko Enter

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

534

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

377

31.03.2010 19:12

rooobertek

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

Upozornenie pri HTML stránke Javascriptom

v JavaScript, VBScript, Ajax

3

2839

09.01.2019 15:36

martinius96

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

Formátovanie textu vypísaného JavaScriptom pomocou HTML

v HTML, XHTML, XML, CSS

6

1269

15.09.2022 13:06

void

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

velkost obrazka

v Grafické programy

3

717

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

612

22.11.2012 14:37

BX

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

Orezanie obrázka

v Grafické programy

3

1945

31.05.2019 10:41

void

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

POZICIA OBRAZKA

v JavaScript, VBScript, Ajax

2

806

22.01.2008 12:46

mirec23



© 2005 - 2025 PCforum, edited by JanoF