Autor Zpráva
polly.90
Profil
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
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.
Majkl578
Profil
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.
polly.90
Profil
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 :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: