Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 11 ] 
AutorSpráva
Offline

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

Registrovaný: 10.07.08
Prihlásený: 08.10.09
Príspevky: 26
Témy: 12
Príspevok NapísalOffline : 13.07.2008 14:41

Mam takyto problem.Mam formular na konci ktoreho je moznost pridavanie obrazkov po jednom.Ked pridam obrazok,stranka sa mi obnovi a vsetky predtym vyplnene udaje su prec,co je velmi neprijemna zalezitost.....Viete mi poradit nejake riesenie? Za vsetky odpovede dakujem


Offline

Užívateľ
Užívateľ
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 13.07.2008 14:45

prenes tie údaje cez URL pomocou GET







_________________
Sorry za prelkepy
Offline

Čestný člen
Čestný člen
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 17.10.06
Prihlásený: 08.01.11
Príspevky: 1752
Témy: 17
Príspevok NapísalOffline : 13.07.2008 14:55

no cez get urcite nie. nacitaj do session. samozrejme po spravnom ich zo session nezabudni vymazat







_________________
A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table.
Offline

Skúsený užívateľ
Skúsený užívateľ
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 13.07.2008 20:30

Kúsok kódu, aby si si to vedel predstaviť:
HTML:
Kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
    <form enctype="multipart/form-data" method="post" action="nieco">
      <fieldset>
        <legend>Údaje</legend>
        <input type="text" name="meno">
        <input type="text" name="priezvisko">
        <input type="text" name="adresa">       
      </fieldset>
      <fieldset>
        <legend>Obrázok</legend>
        <input type="file" name="obrazok">       
      </fieldset>
    </form>
  </body>
</html>

PHP:
Kód:
<?php
if (isset($_POST)) {
  $polia = array("meno", "priezvisko", "adresa");
  foreach ($polia as $key) {
    if (isset($_POST[$key])) {
       $_SESSION['udaje_z_formulara'][$key] = strip_tags($_POST[$key]);
    }
  }
}
funkcia_na_spracovanie_obrazka($_FILES['obrazok']); //alebo cely blok prikazov
blok_prikazov_na_vypis_formulara{
   // vypises rovnaky formular aj so zadanymi hodnotami
}
unset($_SESSION['udaje_z_formulara']); // odstranenie nepotrebnych udajov
?>

No, a vysvetlime si postupne ten PHP kód: ak mám nejaké dáta v POST-e, tak si zadefinujem pole, ktoré bude mať hodnoty prvkov pomenované presne ako jednotlivé políčka vo formulári (neskôr vysvetlím prečo). Následne foreach konštrukciou toto pole preleziem (pri každej iterácii sa do premennej $key uloží príslušná hodnota, tj. najprv meno, potom priezvisko, potom adresa. Frk je v tom, že aj pole $_POST má pri správnom odoslaní položky s hodnotami zadanými od užívateľa pomenované rovnako ako prvky nášho poľa $polia. Takže, ešte kontrola, či naozaj pole $_POST obsahuje položku s názvom $key (teda takú, ktorú sme si dopredu definovali) a ak hej, tak do užívateľskej relácie (session, premenná $_SESSION) si uložíme konkrétnu hodnotu (v tomto prípade po ošetrení funkciou strip_tags, nejaké ošetrenie by tam byť malo, obzvlášť ak chceš tie dáta ešte raz vypísať, možno by sa oplatilo ešte použíť tesne pred výpisom aj funkciu htmlspecialchars). Takto sme si naplnili údaje do užívateľskej relácie a môžeme sa zaoberať spracovaním obrázka, vypísať formulár so zadanými hodnotami a zrušiť nepotrebnú časť užívateľskej relácie (unset($_SESSION['udaje_z_formulara']);).

A ešte vysvetlenie, prečo to šaškovanie s nejakým poľom. Je veľmi nepohodlné vypisovať jednotlivo všetky položky spôsobom (ľahko spravíš preklep, pri každej zmene HTML formulára treba meniť aj PHP kód):
Kód:
$_SESSION['udaje_z_formulara']['meno'] = strip_tags($_POST['meno']);
$_SESSION['udaje_z_formulara']['priezvisko'] = strip_tags($_POST['priezvisko']);
$_SESSION['udaje_z_formulara']['adresa'] = strip_tags($_POST['adresa']);
Oveľa pohodlnejšie je použitie foreach konštrukcie:
Kód:
foreach($_POST as $key => $value) {
   $_SESSION['udaje_z_formulara'][$key] = strip_tags($value);
}
Takto sa automaticky do užívateľskej relácie vložia všetky údaje z POST časti HTTP požiadavku. Lenže, nie je problém, odoslať formulár na tvoj server s úplne inými poliami (jednoducho si niekto stiahne tvoju stránku ako obyčajný html súbor, ľubovoľne pozmení kód a odošle ho na tvoju adresu pomocou parametra action tagu form). Takýmto spôsobom sa k tebe môžu dostať údaje, ktoré nie sú tým, čo sám chceš.

Preto si na kontrolu definujeme pole, v ktorom vymenujeme, ktoré prvky poľa $_POST naozaj chceme a do užívateľskej relácie sa tak dostane naozaj len to, čo chceme aby tam bolo. Navyše, veľmi intuitívne sa tam dajú aplikovať rôzne sanitizačné funkcie (v tomto prípade napr. strip_tags na odstránenie škodlivého HTML kódu, pri samotnom výpise do HTML stránky sa ešte oplatí zabrániť XSS útokom použitím funkcie htmlspecialchars).







_________________
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ý: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 14.07.2008 9:42

ako máš v HTML napr.:
<input type="text" name="meno" value="<?$_POST["meno"]?>">


Offline

Skúsený užívateľ
Skúsený užívateľ
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 14.07.2008 9:48

Čo tým chcel básnik povedať? (nehovoriac o tom, že tam má 2 chyby a spolieha sa, že hodnota v $_POST['meno'] je bezpečne bez záškodníckych znakov)







_________________
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ý: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 14.07.2008 10:05

chcel som tým povedať že neviem ako má vyriešné obrázky ... preto ak mu to refresh spôsobuje napr. JAvasript tak by jednoducho mohol použiť POST v HTMLku ...
ďalej v úvodzovkách nie je chyba ... a bezpečnosť bude riešiť pri kontorole keď uživateľ skončí s pridávaním obrázkov


Offline

Skúsený užívateľ
Skúsený užívateľ
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 14.07.2008 10:16

Chyba je v tom, že používaš skrátené PHP tagy (ktoré naozaj nepodporuje každý hosting, bolestne som sa o tom na vlastnej koži presvedčil) a tiež v tom, že tam nie je žiadne echo, teda hodnota sa nevypíše. V úvodzovkách naozaj chyba nie je. ;)

K bezpečnosti: práve toto je ukážkový príklad na použitie XSS útoku. Ak to takto neošetrené necháš, nie je problém zadať tam škaredé hodnoty (koniec-koncov, sám si sa o tom mohol presvedčiť na svojom chate, využil som presne túto chybu a doteraz ju nemáš odstránenú). Každú hodnotu, ktorú dostaneš od užívateľa a ideš ju spätne vypísať musíš ošetriť. Jednoducho musíš.







_________________
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ý: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 14.07.2008 10:42

ja viem ale počúvaj s tými chybami máš pravdu ... uznávam ... kěď som to potom čítal našiel som ich aj ja ale už sa nedalo ...
k podstate ... keď si tam napíšeš škaredé hodnoty ... pridáš obrázok trebars cez JS a nastane ti refresh. Keď si si dohádzal fotky odosielaš formulár na spracovanie a tam to MUSÍŠ (ako píšeš) spracovať

porozumej: vy to dávate nejakému PHPčku ktoré to spracuje a opäť nastaví HTML
ja nechcem do toho ťahať PHPčko, pretože príde user nahrá prvý obrázok, nahrá druhý, formulár nevyplní a odíte ... urobí ti traffic, teda nad nahrávaním obrázka neuvažujem, preto vravím že sa to dá aj bez toho až v spracovavaní to budeš ošetrovať ...


Offline

Skúsený užívateľ
Skúsený užívateľ
Zapamätanie udajov vo formulari po obnoveni

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 14.07.2008 11:26

Ale ty nerozumieš, že akonáhle robíš echo $_POST['nieco']; musíš mať $_POST['nieco'] ošetrené, pretože ak by hodnota tej premennej bola <h1>Som majster hacker</h1> tak sa ti na stránke napíše, že je niekto majster hacker. A ak tam pridá JavaScript a začne si odosielať identifikátory relácie, alebo falošný prihlasovací formulár, môžu z toho byť ďaleko väčšie problémy.







_________________
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ý: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 14.07.2008 13:01

nie pretože ti to urobí toto: <input type="text" value="<h1>Som Majster hacker</h1>">
teda ti vytvorí input s tou hodnotou ...

problém by bol keby si dal:
"><h1>Som majster hacker</h1><input type="text" value="ahoj smejd

a preto môžeš použiť: napr.
<input type="text" name="meno" value="<?php echo htmlspecialchars($_POST["meno"]);?>">

ale stále nemusíš použiť druhé PHPčko ...


Odpovedať na tému [ Príspevkov: 11 ] 


Podobné témy

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

v PHP, ASP

14

593

16.10.2008 17:36

Roko Zobrazenie posledných príspevkov

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

v PHP, ASP

10

1329

07.03.2008 20:45

Blackdevil Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

4

767

03.09.2007 17:17

KaktusBR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. FF, Zapamätanie hesla

v HTML, XHTML, XML, CSS

6

1075

27.09.2010 20:45

coldak Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

3

346

29.06.2010 19:04

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zapamätanie si poslednej aktivity v Android Studio

v Android, iOS, Windows Phone (Mobile)

1

402

14.03.2015 15:47

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Aktivácia po obnovení systému

v Operačné systémy Microsoft

1

553

06.10.2015 21:49

michalesku Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

5

1387

01.06.2006 12:28

Intelman Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Obnovení dat z paměťové karty?

v Ostatné zariadenia

2

927

20.07.2008 7:59

Luks Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rozdelenie disku po obnovení Cmos?

v Pevné disky a radiče

3

574

24.07.2017 19:37

shiro Zobrazenie posledných príspevkov

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

v Optické zariadenia

2

1367

01.11.2006 21:16

Tom@S Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Modrá obrazovka po obnovení systému

v Notebooky a netbooky

6

394

26.06.2017 0:32

Styracoz Zobrazenie posledných príspevkov

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

v PHP, ASP

7

834

24.12.2009 13:31

Slappy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Windows 10, problém po obnovení systému

v Operačné systémy Microsoft

3

372

15.09.2018 18:38

4040 Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

8

908

05.09.2007 14:23

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nefungujúci popis vo formulári

v HTML, XHTML, XML, CSS

7

522

22.10.2007 11:01

brano Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra