Munkamenet függvények
Sziasztok
végigolvastam ebben a témakörben az írásokat de amit keresek azt sehol nem találtam.
Szóval nem látom át a session-ökkel való munka előnyeit, hátrányait és működésüket.
1. session_start(): ez talán a legvilágosabb; létrehoz egy munkamenet azonosítót, amit a session_id()-vel lekérdezhetek. A session_start()-ot minden oldalon meg kell hívni, akkor tudok dolgozni a létrehozott azonosítóval vagy többel.
2. session_register(): a működését értem, eltárolom az létrehozott azonosítót.
De hova? ez egy cookie lesz? vagy ez csak a memóriában lesz megtalálható?...
3. a legnagyobb probléma a session-ök gyakorlati használatával van: a legegyszerűbb dolgot szeretném csinálni: ember bejelentkezik, utánna lépked a lapokon és akkor jelentkezik ki, ha rákattint a kijelentkezés linkre vagy gombra.
Ha valaki tudna adni egy egyszerű progit, amiből látom a működést, akkor nagyon hálás lennék vagy akármi.
Kösz
Zsolt
■ végigolvastam ebben a témakörben az írásokat de amit keresek azt sehol nem találtam.
Szóval nem látom át a session-ökkel való munka előnyeit, hátrányait és működésüket.
1. session_start(): ez talán a legvilágosabb; létrehoz egy munkamenet azonosítót, amit a session_id()-vel lekérdezhetek. A session_start()-ot minden oldalon meg kell hívni, akkor tudok dolgozni a létrehozott azonosítóval vagy többel.
2. session_register(): a működését értem, eltárolom az létrehozott azonosítót.
De hova? ez egy cookie lesz? vagy ez csak a memóriában lesz megtalálható?...
3. a legnagyobb probléma a session-ök gyakorlati használatával van: a legegyszerűbb dolgot szeretném csinálni: ember bejelentkezik, utánna lépked a lapokon és akkor jelentkezik ki, ha rákattint a kijelentkezés linkre vagy gombra.
Ha valaki tudna adni egy egyszerű progit, amiből látom a működést, akkor nagyon hálás lennék vagy akármi.
Kösz
Zsolt
Két cikk is foglalkozik a témával
--
slink
http://20y.hu/
kösz, megnézem őket...
Munkamenet függvények
Röviden:
A munkamenet függvénnyel egy filet hozol létre a szerveroldalon, amiben megadott változók értékeit tudod eltárolni. Ezekre a változókra utána ugyan úgy tudsz hovatkozni, mint "rendes" társaikra.
Belépés:
Ürlappal átküldesz egy nick és egy password mezőt:
Leellenörzés után, ha létezik ilyen felhasználó, akkor töltse fel ezeket az adatokat a munkamenetbe:
session_start();
session_register( "nick" );
session_register( "pssw" );
Utána minden oldalon végrehajtod az ellenörzést.
A kilépésnél létre kell hozni egy új php-filet:
<?php
session_start();
session_unset();
session_destroy();
header ( "location: index.php" );
?>
Ha az oldal lefut, akkor törlődik a munkamenet, vagyis a felhasználó kilép.
válasz
"és utánna végrehajtod minden oldalon az ellenőrzést..." igazából pont ez érdekel. mit ellenőrzök? van-e munkamenet elindítva? mivel hasonlítom össze?
Végül: mindenhol azt olvasom, hogy a header location előtt nem lehet semmi. És tényleg nem szokott működni, abban amit írtál pedig sok mminden van a header location előtt.
Mi az igazság?
Köszi minden infót...
Kimenet
--
slink
http://20y.hu/
Elavult, nem biztonságos
A fent vázolt módszer eléggé elavult, használd inkább a $_SESSION tömböt, plusz nézd meg az említett cikkeket, mert a fenti megoldás biztonság szempontjából hagy neémi kívánnivalót.
Felhő
kicsit többet...
de a session dologhoz még annyit írhatnátok, hogy a gyakorlatban hogy néz ki a dolog.
1. mondjuk egy belépőoldalon belép az ember. ekkor elindítom a session start-o, session registerrel beregisztrálom a felhasználót.
2. továbblép a következő oldalra de ott mit ellenőrzök? csak azt, hogy van-e munkamenetazonosítója? vagy mi mást?
ez a kérdésem.
Ennek az a lényege, hogy
Mr.Tiny
még még még...
Például egy fórumot vegyünk, belép az ember, lépked a topic-ok között, akkor mit kell ellenőriznem a session-ökkel? mit vizsgáljak? Belép az első oldalon, akkor a másodikban mit vizsgáljak meg?
pölö
amikor belépteted, akkor pl. a $_SESSION['status']-nak adsz egy értéket (belepve, logdin, true, stb, vagy az akció időbélyegét). Minden következő laplekérésnél, ellenőrzöd, hogy az előző akcó óta eltelt idő több-e, mint az az idő, amit te az inaktív felhasználóktól eltűrsz. Ha maradhat, akkor frissíted az értékét, az aktuálisra.
Azt már ha jól értem, akkor érted, hogy a $_SESSION, tömböt ugyanúgy tudod használni, mint az általad létrehozott változókat, tömböket. Az a különbség, hogy a futás közben létrehozott változók (bocs ha pontosan nem ez a neve) az oldal lekérése után eltünnek, míg a munkamenetben tároltakat addig elérheted amíg a munkameneted aktív.
De ha nem így van, akkor az okosok javítsanak ki.
TikuVoltam
Ma is holnap fekszünk le, mint tegnap
zűrös
Mivel?
Mr.Tiny
mégegyszer...
egy tök egyszerű példaprogi megtenné kis magyarázattal...
köszi megint
ennyiből remélem
ez már döfi...
kösz
Szvsz inkább még ne
A manualt egyébként elolvastad? Még példakódot is ad!
Néhány támpont:
- session_start()
- $_SESSION['altaladbeallitottindex'] ellenőrzése
- ha nincs, beállítod, amire szeretnéd
- ha van, megnézed, megfelelő-e
- a kapott helyzet alapján elvégzed azt, ami miatt az egészre szükséged volt
Próbáld meg megírni a kódrészletet, abból tanulsz igazán. Ha pedig végképp nem megy, akkor nem szabad erőltetni, van más megoldás is.
nagyokos?
véletlenül sem akarsz megbántani de gondolom te is tudod, hogy az ilyen kezdetű levelek pont erre jók... mármint, hogy megbántsd az embert...
fogalmam nincs ki vagy és mekkora tudásod van, magamról csak annyit, hogy igaz csak másfél éve, de PHP programozással is foglalkozom, számos referenciám van már az interneten (fórumok, katalógusok, webáruház...) Ezek után mondhatom nem vagyok teljesen kezdő, az említett manuált is sűrűn forgatom sok egyéb könyvvel együtt, és ami miatt ezt a munkamenetes dolgot kérdeztem, az csak azért volt, mert EDDIG a nyomonkövetést másképp oldottam meg (sok felesleges ellenőrzéssel...). De mivel érdekel az is, hogy hogyan lehet jobban csinálni, ezért kérdeztelek benneteket.
Röviden ennyit fűzök írásodhoz és egyébként meg kösz, hogy beírtál valamit, mégha semmire sem volt jó.
Biztos nem volt jó?
Ha követed itt a dolgokat, láthatod, hogy Dualon nem az a beszólogatós fajta. Szóval ne bántódj meg, hanem inkább gondolkodj el azon amit írt. Ráadásul a hozzászólásokra válaszolók nem tudhatják, hogy te mit tudsz, csak azt látják, amit ide beírsz.
Mindezen felül a munkamenetkezelés nagyon egyszerű dolog, rááadásul szerintem is egy PHP programozó esetéban abszolút alap kéne legyen. Ha akárhogy másképp megoldottad, akkor meg simán meg is kéne értened. A kezdő cikkünkben amúgy teljesen részletesen le van írva az egész, annyi önállóság kell, hogy abból meg tudd tanulni.
Ezeknek az alapoknak az ismerete szerintem nélkülözhetetlen ahhoz, hogy komolyabb dolgokat tényleg jól, biztonságosan meg tudj írni.
Felhő
Sajnálom, ha rosszul esett
Sajnálom, ha rosszul esett, amit írtam!
Nem gondoltam, hogy másfél éves PHP-s gyakorlat áll mögötted, ezért soroltam fel a folyamat fontosabb lépéseit ("mégha semmire sem volt jó").
Személy szerint csak legutolsó esetben fordulok a közönséghez, az itt írók közül sokan ugyanis olyan komoly szakértelemről tesznek tanúbizonyságot (napról napra), hogy nem szeretném felesleges dolgokkal rabolni az idejük. Azt hittem, azért nem kapsz (neked megfelelő) választ, mert mások komplexebb kérdésekkel foglalkoznak.
A továbbiakban szvsz ne terheljük ezzel a fórumozókat, ha gondolod, várom leveled a dualon kukac freemail pont hu címre.