[PHP] Sessie delen over 2 domeinen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 08-09-2022
Voor een project waar ik nu aan werk zit ik met het probleem dat ik sessies van 2 servers onder verschillende domeinen moet delen. Hierbij gaat het o.a. om inlogstatus maar ook wat andere info die doormiddel van de sessie wordt onthouden.

Ik ben op zoek geweest in de search en op diverse locaties op internet, maar heb er niets over kunnen vinden. Misschien kan iemand mij hier verder helpen?

=( Protected by witchcraft )=


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

http://www.phpbuilder.com/columns/chriskings20001128.php3

Zoek anders ook eens op Google op de zoekwoorden: Cross Domain Cookies.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Met alleen cross domain cookies ben je er nog niet, je hebt dan wel hetzelfde session_id, maar niet dezelfde data, aangezien er 2 severs gebruikt worden.

Je zal dus ook iets aan de session handling moeten doen, je kan b.v. de sessie gegevens in een database op laten slaan waar beide servers gebruik van maken. (anders weet sever A niet wat server B voor data in de sessie gezet heeft)

Acties:
  • 0 Henk 'm!

Verwijderd

Tja, met dat je je sessie laat opslaan in een cookie (standaard geloof ik) laat je het gelijk opslaan in een db? Ik denk dat dat het handigste is.

Dus in je sessie bestand staat iets als:

PHP:
1
2
session_start();
session_register('username');


..en daarbij zul je dus moeten kijken of die data (gekoppeld aan een ip oid) al in de database staat; zo ja -> gegevens updaten; zo nee -> rij toevoegen in db...

Lijkt mij.

En dan kun je nog meerdere websites koppelen ook aan je db.

Acties:
  • 0 Henk 'm!

Verwijderd

ivy > een sessie wordt niet opgeslagen in een cookie, alleen het id wordt opgeslagen in de cookie. De sessie gegevens staan in een file op de hd, en de gebruiker wordt herkend aan de hand van het id. Je kan iemand's sessie dus ook stelen door het id in je cookie te zetten d8 ik.

Als je de sessie gegevens in een database wilt opslaan moet je zelf een session handler schrijven (http://nl.php.net/manual/...sion-set-save-handler.php) die de sessie gegevens in een database zet met als key natuurlijk het session id. Beide servers moeten dan natuurlijk wel bij dezelfde database kunnen.

Data koppelen aan een ip-adres lijkt me niet handig i.v.m. NAT e.d.

Acties:
  • 0 Henk 'm!

Verwijderd

Die database lijkt mij ook een handig idee.
Je kan dan mss een include pagina maken met enkele functies als GeefSession("blabla") (sry asp maar ik weet niet hoe het in php is).
Vergelijkbare functies met gewone sessievariabelen opvragen maar dan met een iets andere naam die dezelfde functie vervuld maar dan met een db.
Asp voorbeeldje:

ASP:
1
2
3
4
5
6
7
8
9
<%
Function GeefSessie(Session_id, session_naam)
' Database connectie maken enzo...
strSQL = "SELECT " & session_naam & " FROM tblSessies WHERE pkSessionID=" & cstr(Session_id)
' execute en die zaken

GeefSessie = rsData(session_naam)
End Function
%>


Het kan mooier maar dit moet toch te doen zijn?

[ Voor 18% gewijzigd door Verwijderd op 31-07-2003 17:50 ]


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 11:40
Die db is niet echt handig, want punt een is je sessie inhoud zoals al gezegd een 'file', en geen cookie. Die file kan je gewoon zien te achterhalen.

Waarom je van de tempdir voor server a niet een shared, en bij b stel je in dat je temp dir die shared dir is?

|>


Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 13:28
Bekijk ook eens de session_set_save_handler() functie in de PHP manual. Daarmee kun je op een mooie manier sessies in een database opslaan, zonder veel bestaande code aan te hoeven passen.
Pagina: 1