Autor | Zpráva | ||
---|---|---|---|
polly.90 Profil |
#1 · Zasláno: 20. 2. 2012, 19:46:23
Dobrý den,
v php mám jen základní znalosti, většinou si jen upravuju cizí skripty pro vlastní potřeby a narazil jsem na proměnnou $PHPSESSID a funkci session_id(). Z jejich popisu, který jsem našel na internetu mi ale není jasné, jaký je mezi nimi rozdíl. Navíc nevím, jak $PHPSESSID použít. Narazil jsem na návod, kde tuto proměnnou používali pro rozpoznání návštěvníka a ukládali do databáze, z níž se později volala. Když jsem to ale zkoušel, dostal jsem ze serveru odpověď Undefined variable: PHPSESSID. Proměnnou jsem tedy nahradil právě funkcí session_id() a vše, zdá se, funguje jak má. Stejně bych ale prosil o objasnění rozdílu a o způsob, jakým se pracuje s $PHPSESSID. Děkuji |
||
Tori Profil |
#2 · Zasláno: 20. 2. 2012, 23:53:13
polly.90:
Session ID se ukládá do cookie nebo do URL jako proměnná, která se většinou jmenuje "PHPSESSID" (viz nastavení session.name). Pokud by bylo povolené přenášení session ID v URL a zároveň zapnuté nastavení register_globals, ve skriptu by existovala proměnná $PHPSESSID. |
||
Časová prodleva: 3 dny
|
|||
Majkl578 Profil |
#3 · Zasláno: 23. 2. 2012, 20:43:02
Nicméně dělat to, co zmínila Tori (register_globals) rozhodně není vhodné, je to otevření zadních vrátek do aplikace. Správné řešení na získání ID aktuální session je pouze
session_id .
|
||
Časová prodleva: 3 dny
|
|||
polly.90 Profil |
#4 · Zasláno: 26. 2. 2012, 18:47:07
Děkuji za odpovědi,
měl bych ještě doplňující otázku. Myslel jsem, že když uživatel přijde na stránku, tak se pomocí funkce session_start() "otevře" session a uživateli je přiděleno session_id. Logicky by potom mělo stačit, když se prokliká přes odkazy (pořád na jedné doméně) k jinému skriptu, kde pracuji právě s oním session_id, když jen vyvolám funkci session_id(). V tomto případě mi ale server hlásí že proměnná session_id je nenadefinovaná. Proč? Vyřešil jsem to tím, že na te stránce na začátku zase otevřu session pomocí session_start a potom vše funguje. Je to tak v pořádku? |
||
Tori Profil |
polly.90:
Na každé stránce, která má mít přístup k session, je potřeba mít na začátku session_start() .
Pokud prohlížeč pošle serveru existující ID session (které od něj dostal na nějaké předchozí stránce), server ověří, jestli je to ID platné a pokud ano, tak ho použije. Pokud session vypršela nebo prohlížeč nic nepošle, tak server vygeneruje nové ID a pošle ho prohlížeči. Ale když tam to session_start() nedáte, tak server sám od sebe neví, že chcete mít přístup k datům v session.
|
||
polly.90 Profil |
Aha, tak je to... Ještě jednou děkuju, moc mi to pomohlo :-)
|
||
Časová prodleva: 12 let
|
0