[ 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 | 12

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

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: 1757
Témy: 17 | 17

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE

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: 3991
Témy: 96 | 96

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE

Č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: 3991
Témy: 96 | 96

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE

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: 3991
Témy: 96 | 96

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: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE

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: 3991
Témy: 96 | 96

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


 [ Príspevkov: 11 ] 


Zapamätanie udajov vo formulari po obnoveni



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

376

16.10.2008 17:36

Roko

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

porovnavanie udajov a editacia udajov

v PHP, ASP

10

296

07.03.2008 20:45

Blackdevil

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

FF, Zapamätanie hesla

v HTML, XHTML, XML, CSS

6

877

27.09.2010 20:45

coldak

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

Automaticke zapamatanie textu?

v JavaScript, VBScript, Ajax

3

191

29.06.2010 19:04

shaggy

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

zapamatanie zvoleneho menu

v JavaScript, VBScript, Ajax

4

578

03.09.2007 17:17

KaktusBR

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

122

14.03.2015 15:47

walther

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

Nelze spustit obnovení systému

v Operačné systémy Microsoft

5

1132

01.06.2006 12:28

Intelman

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

103

06.10.2015 21:49

michalesku

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

Modrá obrazovka po obnovení systému

v Notebooky a netbooky

6

133

26.06.2017 0:32

Styracoz

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

obnovení stracenich dat z DVD

v Optické zariadenia

2

1168

01.11.2006 21:16

Tom@S

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

Rozdelenie disku po obnovení Cmos?

v Pevné disky a radiče

3

144

24.07.2017 19:37

shiro

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

Obnovení dat z paměťové karty?

v Ostatné zariadenia

2

696

20.07.2008 7:59

Luks

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

Obnovení systému Active Desktop - co to robi?

v Operačné systémy Microsoft

5

3447

10.01.2009 12:56

blackman545

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

Diakritika vo Formulari

v PHP, ASP

7

616

24.12.2009 13:31

Slappy

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

nefungujúci popis vo formulári

v HTML, XHTML, XML, CSS

7

307

22.10.2007 11:01

brano

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

select list vo formulári

v PHP, ASP

3

285

26.06.2007 13:48

sento



© 2005 - 2017 PCforum, edited by JanoF