ugrás a tartalomhoz

Session & munkamenetkezelés

giz · 2005. Már. 31. (Cs), 13.23
Sziasztok.
Olvastam párszor Hodicska Gergely cikkeit és más helpeket, de sajnos még mindig nem vagyok tisztába a session-kezeléssel.
Készítettem 3 oldalt: index1.php, login.php, index2.php

index1.php: bejelentkező oldal, 2 mező és POST-al elküldöm a két adatot a login.php-nek.

login.php: na és gondolom én, itt kellene létrehoznom egy sessionID-t, letárolni cookie-ba, session_start, adatok ellenőrzése:
- ha jók: akkor a beírni a munkamenet-kezelő táblába (sessID,created,last modified stb...), és header("Location: index2.php");
- ha nem jó, akkor: session_destroy(); és header("Location: index1&login=bad.php");

index2.php: itt meg az oldal elején leellenőrzöm, hogy a a client cookie-ában levő sessid ugyanaz-e mint az adatbázisomban levő.

Szóval, kérdéseim a következők. :)
1) Ez az elképzelésem jó-e egy biztonságos beléptetéshez, ill. oldalhasználathoz ?
2) pontosan hogy is van ez a session- és cookie-kezelés? Mely parancsok következnek egymásután (pl.: set-cookie, session_start, session_write_close stb.) ??
3) A session_set_save_handler-t hogyan tudom beállítani ibase-hez??

Várom válaszotokat, előre is nagyon köszönöm!
üdv.: giz
 
1

Szia,

virág · 2005. Már. 31. (Cs), 14.08
Szia,

szerintem kicsit túlbonyolitottad igy a kezdésnél. Alapból nem adatbázisban tárolja a PHP (és te sem) a munkameneteket, ez csak akkor van, ha te igy akarod szándékosan. Neked nincs más dolgod, csak session_start() minden fájl legelején és utána éppúgy használod mint akármilyen más változókat:

$_SESSION['akarmi']=1;

az a másik fájlban is ennyi lesz ha kiolvasod:

$a=$_SESSION['akarmi']

Aztán persze vannak olyanok, hogy register globals ON/OFF, és akkor kicsit más, de ha "új" PHP-d van és normálisan van konfigurálva akkor túl sok meglepetés nem lehet.

ui: A sütikkel sem neked kell törődnöd.
2

hmm..

giz · 2005. Már. 31. (Cs), 14.17
Köszi a választ.
Én adatbázisban szeretnék tárolni.
A sessionid nevét át szeretném nevezni, ill. én szeretném megszabni a karaktersorozatját.
S a sütikkel kapcsolatban meg, hogy abban szeretném letárolni a kliensen a sessionid, mint már írtam.
-giz
3

Szia,

virág · 2005. Már. 31. (Cs), 15.15
Szia,

"Én adatbázisban szeretnék tárolni."

Ehhez a session_set_save_handler() függvénnyel kell felülbirálnod azt, hogy melyik müveletet milyen saját függvényekkel szeretnél kiváltani. Egészen jól le van irva a PHP súgóban magyarul:
http://hu.php.net/manual/hu/function.session-set-save-handler.php

"S a sütikkel kapcsolatban meg, hogy abban szeretném letárolni a kliensen a sessionid, mint már írtam."

Az a PHP elvégzi helyetted.

"Minden webhelyedre látogató egy-egy egyedi azonosítót kap, az úgynevezett munkamenet azonosítót (session azonosítót). Ez vagy egy sütiben (cookie) tárolódik a látogató gépén, vagy az URL-ben közlekedik oldalról oldalra."

Tehát ezzel nem neked kell szenvedned.
4

Apró lépések

Hodicska Gergely · 2005. Már. 31. (Cs), 15.43
Azt a PHP elvégzi helyetted.

Ez alapesetben igaz, de elég sokrétűen lehet konfigurálni.

Eredeti kérdésre: én úgy érzem, hogy elég sok bizonytalan pont van benne a témakörrel kapcsolatban. Azt tanácsolom neked, hogy első körben fordíts elegendő időt arra, hogy megértsd az alapokat. Próbáld ki pl. hogy mi is történik a háttérben (pl. firefox livehttpheaderrel szépen lehet látni), erre folyamatra milyen hatással vannak a különböző PHP beállítások, mi történik akkor, ha nem engedélyezed a cookie-kat a böngészőben ilyesmi.

Utána jöhet a DB-ben való tárolás. Miért szeretnéd amúgy ott tárolni?


Felhő
6

Az a baj, hogy nincs időm

giz · 2005. Már. 31. (Cs), 17.12
Az a baj, hogy nincs időm vele eleget foglalkozni, mert nagyon szűk a határidő. :\
Adatbázisban szeretném tárolni a session-el kapcsolatos információkat, mert gyorsabb, átláthatóbb, jobb. (mondjuk nem biztos, h gyorsabb:)
Abban segítsetek légyszíves (konkrét függvényekkel!), hogy hogyan tudom, session_id nevét átírni, mikor használjak session_startot, hogyan tároljam le cookieban a session_id-t, hogy töröljem onnan, valamennyi idő után elavuljon.
Tulajdonképp egy korrekt biztonságos munkamenet-kezelést szeretnék megérteni/létrehozni (2-3 napon belül)... Ez lehet, hogy lehetetlen !? :)
Köszi nektek, giz
5

A biztonságos session

Tome · 2005. Már. 31. (Cs), 16.36
A biztonságos session haszálat nekem is okozott fejtörést régebben, de kielégítő választ sosem kaptam.
Az mennyire biztonságos, ha csak egy session_start-ot használok, de a session id-vel egyátalán nem foglalkozom? (nem tárolom url-ben, illetve nem használok direkt set-cookie-t) Tehát hagyom, hogy a szerver le, a böngésző pedig visszaküldje az id-t mikor kommunikációra kerül sor. Ilyenkor is 100%-ig biztos lehetek abban, hogy a userek munkamenetei nem keverednek össze?
7

mivel minden munkamenet

Fekete Ferenc GDA · 2005. Már. 31. (Cs), 20.42
mivel minden munkamenet egyedi sessionID-t kap ,nem fog összekeveredni semmi

ferenc voltam