| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 10.07.08 Prihlásený: 08.10.09 Príspevky: 26 Témy: 12 | Napísal pedrix: 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
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 13.07.2008 14:45 | |
|
prenes tie údaje cez URL pomocou GET
_________________ Sorry za prelkepy |
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 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. |
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 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. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
ako máš v HTML napr.:
<input type="text" name="meno" value="<?$_POST["meno"]?>">
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 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. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 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
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 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. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 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ť ...
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 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. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 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 ...
|
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| zapamatanie hodnot vo formulari v PHP, ASP | 14 | 593 | 16.10.2008 17:36 Roko | | porovnavanie udajov a editacia udajov v PHP, ASP | 10 | 1329 | 07.03.2008 20:45 Blackdevil | | zapamatanie zvoleneho menu v JavaScript, VBScript, Ajax | 4 | 767 | 03.09.2007 17:17 KaktusBR | | FF, Zapamätanie hesla v HTML, XHTML, XML, CSS | 6 | 1075 | 27.09.2010 20:45 coldak | | Automaticke zapamatanie textu? v JavaScript, VBScript, Ajax | 3 | 346 | 29.06.2010 19:04 shaggy | | Zapamätanie si poslednej aktivity v Android Studio v Android, iOS, Windows Phone (Mobile) | 1 | 402 | 14.03.2015 15:47 walther | | Aktivácia po obnovení systému v Operačné systémy Microsoft | 1 | 553 | 06.10.2015 21:49 michalesku | | Nelze spustit obnovení systému v Operačné systémy Microsoft | 5 | 1387 | 01.06.2006 12:28 Intelman | | Obnovení dat z paměťové karty? v Ostatné zariadenia | 2 | 927 | 20.07.2008 7:59 Luks | | Rozdelenie disku po obnovení Cmos? v Pevné disky a radiče | 3 | 574 | 24.07.2017 19:37 shiro | | obnovení stracenich dat z DVD v Optické zariadenia | 2 | 1367 | 01.11.2006 21:16 Tom@S | | Modrá obrazovka po obnovení systému v Notebooky a netbooky | 6 | 394 | 26.06.2017 0:32 Styracoz | | Diakritika vo Formulari v PHP, ASP | 7 | 834 | 24.12.2009 13:31 Slappy | | Windows 10, problém po obnovení systému v Operačné systémy Microsoft | 3 | 372 | 15.09.2018 18:38 4040 | | kontrola retazca vo formulari v JavaScript, VBScript, Ajax | 8 | 908 | 05.09.2007 14:23 juho | | nefungujúci popis vo formulári v HTML, XHTML, XML, CSS | 7 | 522 | 22.10.2007 11:01 brano |
| 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
|
|