ugrás a tartalomhoz

Több űrlap kezelése egy oldalon

kalamona · 2006. Szep. 9. (Szo), 12.29
Sziasztok!

Adott egy oldal, amin több form van. pl.
- mini hirlevél regisztrációs doboz balmenuben,
- login doboz jobboldalon,
- plusz még változatos űrlapok jelenhetnek meg a középső fő szekcióban.

Hogyan szokás megvalósítani ennak a kezelését? Hogyan kell szép, profi megoldással eldönteni hogy melyik formon melyik gombra kattintott az emberünk? A <form> html tag "name" paramétere lekérdezhető valahigyan php-ből?

Butaság az a gondolat, hogy egy "action" nevű rejtett űrlapmező tartalmazza, hogy mi a neve a formnak, ahonnan a POST jött? plusz a GET-el érkező adatok is kb. így néznének ki: index.php?action="listazas"&katID=25
Tehát itt is lenne egy action paraméter.
Írnék egy függvényt ami a $_REQUEST-tömbben megnézi van e "action" kulcs, ha igen csinalok egy call_user_func_array($_REQUEST['action',$tobbiadatarequestbol);
szerű hívást. Persze, ha parásak vagyunk kellhet valami ellenőrzés, hogy akármelyik fv-ünk azért ne hívhassák meg így.
Ez nagyon gányolás? Ez a probléma olyan alapkérdésnek tünik... Mondjátok meg hogyan kell ezt csinálni szépen! :)

Köszönöm!
 
1

alapkérdés

Hojtsy Gábor · 2006. Szep. 9. (Szo), 12.50
Tényleg alapkérdés.
  • Egy ökölszabály az, hogy ha különböző funkciókat valósítanak meg az űrlapok (pl. keresés, bejelentkezés, hozzászólás írása), akkor azoknak más action paramétert szokás megadni.
  • Viszont ha azonos funkcióhoz kapcsolódó kicsit eltérő eseményről van szó (pl. hozzászólás előnézete és a hozzászólás beküldése), akkor ezeket két submit gombbal oldják meg egyazon űrlapon belül, melyek name paramétere alapján eldönthető a szerver oldalon, hogy melyiket nyomták le.

A call_user_func_array() hívása közvetlenül felhasználói bemenet alapján nagyon rossz ötlet. Nincs olyan, hogy "ha parásak vagyunk, akkor ellenőrizzük". Mindig "parásak vagyunk"!
3

Szóval...

kalamona · 2006. Szep. 9. (Szo), 13.12
Akkor action paramétereim ilyenfélék lesznek?
action="index.php?action=hirlevelreg"
hogyan különböztetem meg egymástól a submit gombokat? a call_user...-be éreztem, hogy bele fogtok kötni, azért utaltam rá hogy gondolok az ellenőrzésre. :) Milyen megoldást javasolsz? csináljak egy tömböt a zöldlámpás fv-ek nevével? vagy figyeljem, hogy csak olyan fv-ek hivhatók igy, aminek mondjuk "user_" string-el kezdődik a neve? ("user_hirlevelreg")
2

Submit gomboknak eltérő név

Dualon · 2006. Szep. 9. (Szo), 12.50
Lásd tárgy.

A felvázolt ötlet szerintem nem túl elegáns, meg többnyire felesleges is.
Biztonsághoz pl. inkább szerver oldalon is tárolt kulcs, hogy ne nyúlják le a user sessionjét.
4

Nem értem :(

kalamona · 2006. Szep. 9. (Szo), 13.16
Az én ötletem nem elegáns, vagy Gáboréra (több submit) gondolsz? Ha Gáboráéra, akkor mi legyen helyette?

Biztonság: tehát call_user... validáció helyett INKÁBB sessionazonosító-tárolás a szerveren? Hogyan helyettesíti egymást a két dolog?
5

A Tiédet nem találom elegánsnak

Dualon · 2006. Szep. 9. (Szo), 13.25
Véleményem egybecseng Felhőével. (Szerk.: Az időből látszik, hogy egyszerre küldtük be hozzászólásaink.)

Biztonság tekintetében ezek nem vagylagos választások. A user felől jövő adatot mindenképp szűrni kell, ez nem kérdéses; a cikkek közt találsz remek kiindulópontot a kérdésben.
Szintén van a cikkek közt SQL injectionnel, XSS-sel, stb. foglalkozó írás, emlékeim szerint abban volt szó a session ellopásáról is.
Nem írnám le még egyszer, ha nem muszáj, de ha nem találod (vagy kérdésed marad), szólj, és szívesen segítek.
6

elegancia

kalamona · 2006. Szep. 9. (Szo), 13.35
Igazad van, az időt nem néztem. Köszönöm a tanácsokat, olvastam a cikkeket, csak az előző rövidebb válaszodban nem láttam át hirtelen mi mire vonatkozott. Természetesen fogom szűrni az adatokat, csak az eredeti kérdést nem erre hegyeztem ki, aztán meg is találtátok kritikákkal:). Még nem döntöttem el milyen módszert vetek be, Felhőnek írt válaszomban kérdeztem is, hogy hogyan szokott ez menni gyakorlottabb kezek között.

Milyen elegánsabb megoldás létezik a felhasználói akció azonosítására és attól függően fv-ek futtatására?
7

nya

toxin · 2006. Szep. 9. (Szo), 14.45
http://weblabor.hu/forumok/temak/14445#comment-33526
cForm

skacok ne xarakodjatok már a formozással, lécci ;) :)
8

Több submit

kalamona · 2006. Szep. 9. (Szo), 18.41
Hogyan érdemes megvizsgálni hogy egy form több submit gombja közül melyiket nyomták meg? Legyen ugyanaz a nevük és nézzem az értéküket? Ezzel az a baj, ha nyelvesítve lesz az oldal a gombok felirata (value) is más lesz. Akkor mst mi legyen? Nincs kiút? Mindennek vége?
9

lehetséges akciók

Hojtsy Gábor · 2006. Szep. 10. (V), 20.45
Szinte mindegy, hogy mit fogsz ellenőrizni szerintem.
<?php
if (isset($_GET['submitneve']) && $_GET['submitneve'] == 'Mentés') {
  // akkor mentünk
}
?>
vagy
<?php
if (isset($_GET['submit_save'])) {
  // akkor mentünk
}
?>
Az első esetben ismert a submit gomb neve, és mindig ugyanaz. Figyelni kell viszont a submit gomb értékét, ami más-más nyelven más lehet. A második esetben vannak nyelvfüggetlenül elnevezett submit gombok (name paraméter), és ezek alapján ellenőrzöl. Submit gomboknál csak az lesz beállítva, amit megnyomott a felhasználó.

Persze ha valaki nem a korrekt böngésző felületet használja, akkor bármilyen adat lehet, több submit gomb, szükséges adatok hiánya stb. ezeket ellenőrizni kell.