Stránka: 1 z 1
| [ Príspevkov: 24 ] | |
Autor | Správa |
---|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Neviem, či je to v správnej kategórii, tak sa dopredu ospravedlňujem.
Dajme tomu, že mám takto dokument v php:
<?php
$meno = 'Jozef';
$bydlisko = 'BA';
?>
Potreboval by som pomocou formulára zapísať do tohto dokumentu zmeny po odoslaní:
<form action="" method="GET">
<input name="meno" type="text" value="">
<input name="bydlisko" type="text" value="">
<input type="submit" value="Upraviť">
</form>
Ako na to?
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
takto, odporučil by som miesto metódy GET použiť POST (asi to nie je vyhľadávanie, alebo niečo podobné) - ale ak chceš lepšie vedieť, ktorá metóda je na tvoj príklad lepšia, rozveď to viac (neexistuje "zlá" metóda, každá je na niečo iné).
ďalej, býva pravidlom, že máš v jednom súbori skript ktorý generuje formulár a v druhom skript, ktorý dáta z formulára spracúva. neodošleš tak nechtiac údaje viackrát, ak stlačíš refresh. takže do atribútu action napíš cestu k súboru, ktorý to bude spracúvať.
no, dostávame sa k najdôležitejšej časti - ak odošleš formulár (tj. stlačíš tlačítko), dáta prevezme skript ktorý je uvedený v action. podľa metódy sa uložia do asociatívneho poľa $_GET alebo $_POST (zároveň aj do $_REQUEST, ale toto pole neodporúčam používať, hrozí pomerne ľahké zneužitie).
indexom každého prvku toho poľa je hodnota atribútu name vo formulári.
no a potom už máš údaje v premenných a môžeš s nimi robiť čo len chceš. predtým však mysli na jedno - akékoľvek vstupy zvonku (tj. vyplnenie formuláru) treba považovať za nedôveryhodné dáta - nikdy ich neposielaj iným subsystémom (napr. databázi) bez overenia hodnôt a odstránenia nepovolených znakov. ušetríš si veľa problémov.
toľko teória, teraz prax:
toto je html kód na formulár, pridal som ti značky label - popisujú formulárové polia, skús na ne kliknúť (treba ich správne spojiť cez id s inputmi).
Kód: <form action="nejaky_php_skript.php" method="post"> <label for="meno">Meno:</label><input name="meno" type="text" id="meno"> <label for="bydlisko">Bydlisko:</label><input name="bydlisko" type="text" id="bydlisko"> <input type="submit" value="Upraviť"> </form>
a teraz súbor nejaky_php_skript.php Kód: <?php $meno = strip_tags($_POST['meno']); /* tato funkcia zabezpeci, ze nam neprejdu ziadne skodlive HTML znaky do ineho subsystemu - ochrana pred XSS (cross-site scriptiong) */ $meno = addslashes($meno); /* toto pouzi, ak ides data vkladat do databazy, ochrani to pred SQL injection */
$bydlisko = strip_tags($_POST['bydlisko']); /* vsimni si, ze mame pole $_POST a jeho prvky maju indexy podla nazvov formularovych poli*/ $bydlisko = addslashes($bydlisko); /* opat - pouzi, ak ides data vkladat do databazy, ochrani to pred SQL injection */ ?>
samozrejme, ak by si sa rozhodol pre metodu GET, tvoje pole bude $_GET. ešte ti dám tip - aby si prehľadne videl všetko, čo danou metódou posielaš, nezaškodí si občas zobraziť tento skript: Kód: echo "<pre>"; print_r($_POST); // alebo $_GET echo "</pre>";
zobrazí ti to celý obsah poľa $_POST (alebo akéhokoľvek iného poľa, alebo aj inej premennej) v prehľadnej forme.
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Ďakujem za vysvetlenie, ibaže mne to nejako nejde, viem, asi som retardovaný. Mne sa to vôbec nemení. Nemalo by sa tam dakde aj nastaviť, v ktorom súbore sa má prepisovať to $meno = ?? lebo po odoslaní mi stále ukazuje Jozef
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
tak skús rovno takto do 1 súboru:
Kód: <?php $meno = strip_tags($_POST['meno']); $bydlisko = strip_tags($_POST['bydlisko']); ?>
<form action="" method="post"> <label for="meno">Meno:</label><input name="meno" type="text" id="meno"> <label for="bydlisko">Bydlisko:</label><input name="bydlisko" type="text" id="bydlisko"> <input type="submit" value="Upraviť"> </form>
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Neviem, či si ma správne pochopil tak to vysvetlím najpodrobnejšie ako sa dá:
Príklad:
Mám 3 súbory. V prvom je toto:
Kód: Meno: <?php echo($meno); ?> Priezvisko: <?php echo($priezvisko); ?> V tom druhom je: Kód: <?php $meno = 'Jozef'; $priezvisko = 'Mrkvička'; ?>
Ako môžem pomocou formulára upraviť hodnoty tak, aby sa po odoslaní v tom druhom súbore prepísali hodnoty? Formulár bude v treťom súbore. Ďakujem
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
formulár bude v treťom, ale bude po odoslaní odosielať dáta do toho druhého. a ten druhý tie dáta aj spracuje. ak ti nevonia to predchádzajúce prevedenie, skús toto:
Kód: <?php if (isset($_POST['meno']){ $meno = strip_tags($_POST['meno']); } else { die("Nezadal si meno!"); } if (isset($_POST['bydlisko'])){ $bydlisko = strip_tags($_POST['bydlisko']); } else { die("Nezadal si bydlisko!"); } ?>
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
Všetko som urobit ako som povedal, akurát som si to trošku prispôsobil Avšak po kliknutí na odoslať sa údaje nezmenia! Stále zostáva to, čo bolo predtým
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
a si si istý, že ich potom nemeníš? daj pre istotu zdrojové kódy
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
form.php
Kód: <?php include('udaje.php'); ?>
<form action="udaje.php" method="post"> <label for="meno">Meno:</label><input name="meno" type="text" id="meno"> <label for="bydlisko">Bydlisko:</label><input name="bydlisko" type="text" id="bydlisko"> <input type="submit" value="Odoslat"> </form> udaje.php Kód: <?php $meno = strip_tags($_POST['meno']); /* tato funkcia zabezpeci, ze nam neprejdu ziadne skodlive HTML znaky do ineho subsystemu - ochrana pred XSS (cross-site scriptiong) */
$bydlisko = strip_tags($_POST['bydlisko']); /* vsimni si, ze mame pole $_POST a jeho prvky maju indexy podla nazvov formularovych poli*/ ?>
<?php $meno = 'Zadaj'; $bydlisko = 'Zadaj'; ?>
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
no veď iste, lebo najprv síce dáš tie hodnoty z formuláru, ale potom ich prepíšeš na hodnoty "zadaj".
takže sprav to takto (udaje.php):
Kód: <?php $meno = strip_tags($_POST['meno']); /* tato funkcia zabezpeci, ze nam neprejdu ziadne skodlive HTML znaky do ineho subsystemu - ochrana pred XSS (cross-site scriptiong) */
$bydlisko = strip_tags($_POST['bydlisko']); /* vsimni si, ze mame pole $_POST a jeho prvky maju indexy podla nazvov formularovych poli*/
/* teraz overime, ci premenne nie su prazdne - ak su, dame im predvolene hodnoty */ if (strlen($meno) == "0"){ $meno = 'Zadaj'; } if (strlen($bydlisko) == "0"){ $bydlisko = 'Zadaj'; } ?>
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
No akurát, že po odoslaní mi to nič nerobí. Ja to totiž potrebujem tak, aby bol napr. formulár s položka napr. Meno a Bydlisko, užívateľ zadá meno a bydlisko a po odoslaní sa to zapíše do súboru, z ktorého sa to potom bude dať načítať
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
tak mi daj úplne celý kód čo máš, nech sa na to pozriem. lebo toto je na 100% funkčné!
_________________
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ý: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
pepek92 píše: No akurát, že po odoslaní mi to nič nerobí. Ja to totiž potrebujem tak, aby bol napr. formulár s položka napr. Meno a Bydlisko, užívateľ zadá meno a bydlisko a po odoslaní sa to zapíše do súboru, z ktorého sa to potom bude dať načítať Kód: <?php if((isset($_POST['meno'])) && (isset($_POST['bydlisko']))){ $meno = strip_tags($_POST['meno']); $meno = addslashes($meno); $bydlisko = strip_tags($_POST['bydlisko']); $bydlisko = addslashes($bydlisko); $fp=FOpen ("subor.htm", "a"); FWrite ($fp,$meno."<br>".$bydlisko."<br> ---------------------"); FClose ($fp); echo "meno: ".$meno."<br>bydlisko: ".$bydlisko."<br><br>Tieto údaje boli úspešne uložené<br>"; } else { ?> <form action="#" method="post"> <label for="meno">Meno:</label><input name="meno" type="text" id="meno"><br> <label for="bydlisko">Bydlisko:</label><input name="bydlisko" type="text" id="bydlisko"> <input type="submit" value="Upraviť"> </form> <?php } ?> nech ti to kolega ešte doladí..
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
ďakujem, aspoň sa mi to už konečne zapisuje, ale ešte by som potreboval, aby sa to zapísalo do $meno a $bydlisko, čiže keď dajme tomu budem zobrazovať profil, nech sa to odtiať načíta
príklad:
pred odoslaním ->
<?php
$meno = '';
$bydlisko = '';
?>
po odoslaní - >
<?php
$meno = 'Janko mrkvička';
$bydlisko = 'Košice';
?>
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
chlape, ty si úplne mimo.. veď to v tých premenných máš. Zapíše sa do súboru, vypíše na stránke a stále to máš aj v tých premenných a môžeš s tým pracovať ďalej
edit: ja ty ako chceš, že si niekto dá zobraziť profil, tak sa vyhladá v tom súbore jeho meno a vypíše sa aj meno aj adresa patriaca k tomu menu? no to si mal radšej zapisovať do db v tom prípade.. dá sa to aj tu vyhladať, ale to je neefektívne a nechce sa mi to robiť
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
no a nedalo by sa to normálne, že zapísať do súboru v php, pretože databázy vôbec neovladám...
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
dalo, ale je to neefektívne. Keď budeš mať tisíce záznamov, tak ten súbor bude mať niekoľko mega a kým ho prehladá a nájde ten záznam (ktoré sú radené podľa dátumu, najnovší dá dole a nie podľa abecedy) tak užívateľ radšej klikne na červený krížik pravo hore
|
|
Registrovaný: 21.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
ibaže toto 1000 záznamov nebude mať, je to totiž na stránke mojej triedy, ktorú chcem oživiť trošku o profily žiakov
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
aj keby tých záznamov malo byť len 10, databáza je lepšia. chce to len trošku času a naučiť sa to.
_________________
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.01.07 Prihlásený: 29.03.20 Príspevky: 660 Témy: 53 | 53 |
ibaže na to čas momentálne nemám potreboval by som to čo najrýchlejšie, no keď to takto nejde, tak to budem musieť vypĺňať manuálne
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
a tak zase aj statické stránky majú čosi do seba
_________________
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ý: 26.07.06 Prihlásený: 20.03.16 Príspevky: 1378 Témy: 90 | 90 Bydlisko: Slovakia-Ko... |
audiotrack píše: Kód: ... $meno = strip_tags($_POST['meno']); $meno = addslashes($meno); $bydlisko = strip_tags($_POST['bydlisko']); $bydlisko = addslashes($bydlisko); $fp=FOpen ("subor.htm", "a"); FWrite ($fp,$meno."<br>".$bydlisko."<br> ---------------------"); FClose ($fp); ...
mozno je to dost blba otazka ale o noho logickejsia ako tuna postmina...vysvetlili by ste mi co sa roby v tychto riadkoch bo s par vecami stamad som sa este nestretol
ospravedlnujem sa moju nevedomost ale rad by som to chcel vediet dik za odpoved
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých |
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 | |
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 | 35 Bydlisko: BA - WESTSIDE |
Citácia: kto nevie, nech hladá a nekladie blbé otázky
presne tak. žiadne fórum mi ešte nedalo toľko, ako prečítanie si PHP manuálu. je napísaný pomerne jednoduchou angličtinou, niektoré časti sú už aj v slovenčine.
strip_tags odstráni html tagy a iný nebezpečný balast, dá sa nastaviť aby nejaké povolilo
addslashes je obrana pred sql injection, pred apostrof dáva spätné lomítko
fopen fwrite a fclose postupne otvoria súbor, zapíšu a zavrú.
_________________
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. |
|
Stránka: 1 z 1
| [ Príspevkov: 24 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| [ Choď na stránku: 1, 2, 3 ] v Technológia .NET | 67 | 2895 | 28.06.2013 22:08 walther | | v Redakčné systémy | 1 | 1212 | 22.08.2016 10:26 hatto13 | | v JavaScript, VBScript, Ajax | 17 | 1397 | 24.12.2008 19:58 Draex | | v PHP, ASP | 1 | 579 | 07.06.2009 15:44 Ďuri | | v JavaScript, VBScript, Ajax | 1 | 570 | 02.02.2011 17:13 Ďuri | | v PHP, ASP | 9 | 762 | 07.07.2012 20:39 Vojko | | v PHP, ASP | 11 | 978 | 27.02.2009 12:38 Pades | | v HTML, XHTML, XML, CSS | 14 | 1173 | 27.05.2007 10:00 p360t | | v JavaScript, VBScript, Ajax | 21 | 1465 | 03.11.2011 10:53 elo | | v HTML, XHTML, XML, CSS | 14 | 854 | 03.05.2008 19:31 Svolo | | v Ponuka práce | 3 | 1808 | 30.05.2006 6:51 jakub023 | | v Webdesign | 6 | 579 | 27.03.2013 8:19 Achelan | | v PHP, ASP | 0 | 407 | 24.09.2012 15:35 e-shark | | v Ostatné | 0 | 396 | 08.03.2016 19:23 matej71 | | v HTML, XHTML, XML, CSS | 24 | 1127 | 08.01.2011 14:55 shaggy | | v PHP, ASP | 1 | 438 | 09.07.2012 20:31 killer |
|