[PHP] Session Workaround

Pagina: 1
Acties:
  • 719 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kan me niet neerleggen bij het feit dat ik de sessie via de url moet gaan mee geven, of de gebruiker te adviseren om cookies aan te zetten. Als deze uitstaan.

Ook als ik tussen bijvoorbeeld http://nl.domeinaam.com en http://fr.domeinaam.com wissel, dan blijf ik met Internet Explorer en Netscape wel ingelogd, maar Opera, Mozilla en Firefox weigeren dit gewoon. Ook kunnen de laatste drie slecht overweg met (redirect) headers.

Ik vraag me af of er geen workaround is om de bezoeker te herkennen, danwel in te loggen, waarbij geen gebruik wordt gemaakt van cookies, ik wil ook mijn urls niet vervuilen met de PHPSESSID in de url. Bovendien is dit voor mij geen oplossing.

Nu gebruik ik in mijn administratie gedeelte htaccess, maar dit vind ik voor website bezoekers geen gebruiksvriendelijke methode, ik vind het belangrijk dat ik via een formulier op de pagina kan aanloggen.

Ik vraag me af of er niet een login mogelijkheid bestaat via SSL of enig ander. Mischien een extentie voor PHP?

Mocht dit niet bestaan, heb ik gedacht om bijvoorbeeld het IP van de gebruiker te gebruiken als referentie, maar dan in combinatie met bijvoorbeeld een reeks instellingen die de gebruiker op de computer heeft ingesteld, al lijkt me dit op lange na niet de beste en zeker geen veilige oplossing.

Acties:
  • 0 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 07-08 16:08
Waarom zou je de sessionid in de url willen hebben? Dat is helemaal niet nodig... Daarnaast, dat de browsers opera, mozilla en firefox je niet inloggen is gewoon veiligheid. Als je op blaat.site.com ingelogt bent, ben je niet ingelogt op phisher.site.com. Kijk naar bijvoorbeeld gratis webhosting diensten... dan zou je zo de cookies van andere sites kunnen uitlezen bij gebruikers.

De oplossing daarvoor is om het domein / path op te geven in je setcookie statement, zie hiervoor de php manual.

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 10-08 12:05
Kun je niet gewoon aangeven in het cookie path dat de cookie valid is voor *.domeinnaam.com? Lijkt me sterk dat Opera etc daar niet mee overweg kunnen eigenlijk....

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het lijkt me inderdaad ook dat je je cookie niet op het hoofddomein zet maar op het subdomein.
Overigens lijkt het me ook sterk dat de genoemde browsers slecht overweg kunnen met redirect headers. Ik denk persoonlijk dat je het zelf verkeerd doet en Internet Explorer daar gewoon wat (te) makkelijk mee omgaat waardoor het daar wel werkt.
Wat voorbeelden van hoe je je cookies zet en hoe je je redirect headers stuurt (ook geen output voor de headers?) zouden handig zijn.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

hoe wil je een reeks instellingen van een computer halen? met ActiveX ofzo :P

ik zou als ik jou was gewoon checken of cookies enabled zijn, zo ja cookies gebruiken, en anders sessionID... je kan PHPSESSID hernoemen in je php.ini als je dat wilt :P

-niks-


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, ik vind het ook allemaal niet onlogisch ofzo, ik probeer even verder te kijken dan mijn neus lang is, ik heb dit nu als php.ini instelling:

; The path for which the cookie is valid.
session.cookie_path = /

Die zou ik dus als volgt in kunnen stellen?

session.cookie_path = *.mijndomeinnaam.com

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil de sessieid NIET in de url :P
Nielsvr schreef op zondag 27 augustus 2006 @ 12:03:
Waarom zou je de sessionid in de url willen hebben? Dat is helemaal niet nodig... Daarnaast, dat de browsers opera, mozilla en firefox je niet inloggen is gewoon veiligheid. Als je op blaat.site.com ingelogt bent, ben je niet ingelogt op phisher.site.com. Kijk naar bijvoorbeeld gratis webhosting diensten... dan zou je zo de cookies van andere sites kunnen uitlezen bij gebruikers.

De oplossing daarvoor is om het domein / path op te geven in je setcookie statement, zie hiervoor de php manual.

Acties:
  • 0 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 07-08 16:08
die kan je beter instellen via de setcookie statement, tenzij je de enigste bent die host op die server. Er staat een mooi voorbeeld over hoe het moet op www.php.net/setcookie.

@Hierboven, ik weet niet hoe je er bij komt dat je de sessie id in de url moet hebben, maar ik heb dat nog nooit gedaan!

[ Voor 25% gewijzigd door Nielsvr op 27-08-2006 12:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
IE is inderdaad erg flexibel qua fouten. Ik heb niet zozeer iets om nu even te posten, ik zoek gewoon een algemene oplossing om in te loggen, geen codes etc, zodat ik gelijk op de juiste manier kan beginnen. Ik zal even kijken nog of de php.ini instelling kan werken, ik vind het namelijk gebruiksvriendelijker als je op subdomein nl, en, de ofzo bent, dat je dan ingelogd blijft, en niet opnieuw hoeft aan te loggen. Als dit niet mogelijk is, dan kan ik ook genoegen nemen door op het subdomein aan te loggen zoals je aangeeft.
crisp schreef op zondag 27 augustus 2006 @ 12:09:
Het lijkt me inderdaad ook dat je je cookie niet op het hoofddomein zet maar op het subdomein.
Overigens lijkt het me ook sterk dat de genoemde browsers slecht overweg kunnen met redirect headers. Ik denk persoonlijk dat je het zelf verkeerd doet en Internet Explorer daar gewoon wat (te) makkelijk mee omgaat waardoor het daar wel werkt.
Wat voorbeelden van hoe je je cookies zet en hoe je je redirect headers stuurt (ook geen output voor de headers?) zouden handig zijn.

Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
Als je van t ene domein naar het andere gaat met een "form" kun je de session id ook in een hidden form field droppen. (POST)

oisd.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als cookies uitstaan, dan zal php proberen (indien ingesteld php.ini) PHPSESSID=0000000000 toe te voegen aan je urls, ik heb mijn eigen php.ini file voor dit domein. Dus kan ik session.cookie_path = *.mijndomeinnaam.com
gebruiken? Om tussen verschillende subdomeinen ingelogd te blijven?
Nielsvr schreef op zondag 27 augustus 2006 @ 12:16:
die kan je beter instellen via de setcookie statement, tenzij je de enigste bent die host op die server. Er staat een mooi voorbeeld over hoe het moet op www.php.net/setcookie.

@Hierboven, ik weet niet hoe je er bij komt dat je de sessie id in de url moet hebben, maar ik heb dat nog nooit gedaan!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, echter als ik niet terug ga naar de pagina vanaf waar ik formulier verstuur, krijg ik problemen met de terug naar de vorige pagina denk ik of niet?
DapinododiadeaL schreef op zondag 27 augustus 2006 @ 12:21:
Als je van t ene domein naar het andere gaat met een "form" kun je de session id ook in een hidden form field droppen. (POST)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

een cookie_path moet een path bevatten, geen domein - dat stel je in voor session.cookie_domain (en ik denk niet dat die wildcards ondersteund, daar zal je ws ".mijndomeinnaam.com" in moeten vullen.
Als alternatief kan je natuurlijk ook session_set_cookie_vars() gebruiken.

Normaliter zou je session.cookie_domain gewoon leeg moeten kunnen laten, dan wordt de hostname van de server gebruikt. Als die hostname echter niet "mijndomeinnaam.com" is dan krijg je dit soort problemen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op zondag 27 augustus 2006 @ 12:27:
een cookie_path moet een path bevatten, geen domein - dat stel je in voor session.cookie_domain (en ik denk niet dat die wildcards ondersteund, daar zal je ws ".mijndomeinnaam.com" in moeten vullen.
Als alternatief kan je natuurlijk ook session_set_cookie_vars() gebruiken.

Normaliter zou je session.cookie_domain gewoon leeg moeten kunnen laten, dan wordt de hostname van de server gebruikt. Als die hostname echter niet "mijndomeinnaam.com" is dan krijg je dit soort problemen.
Ik heb nu deze regels:

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

Dus ik moet alleen session.cookie_domain =, veranderen in:
session.cookie_domain = .mijndomeinnaam.com?

En is path ook juist ingesteld zo?

Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
Verwijderd schreef op zondag 27 augustus 2006 @ 12:26:
Ja, echter als ik niet terug ga naar de pagina vanaf waar ik formulier verstuur, krijg ik problemen met de terug naar de vorige pagina denk ik of niet?
[...]
Als je niet terug gaat? Dan is er niets aan de hand, en zit je op t andere subdomain (wel de session id uitlezen en die gebruiken). Ga je wel terug.. hmm .. dan zou je als t goed is nog ingelogd moeten zijn want afaik blijven sessioncookies op je pc totdat je je browser sluit.

oisd.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
En is het niet mogelijk, dat als je inlogd op subdomein `nl` dat ik dan gelijk settings instel voor bijvoorbeeld de subdomeinen `de`, `en` enzovoorts. Dat zou dan ook een oplossing zijn. :*)

Acties:
  • 0 Henk 'm!

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 04-08 14:27
Verwijderd schreef op zondag 27 augustus 2006 @ 12:47:
En is het niet mogelijk, dat als je inlogd op subdomein `nl` dat ik dan gelijk settings instel voor bijvoorbeeld de subdomeinen `de`, `en` enzovoorts. Dat zou dan ook een oplossing zijn. :*)
http://www.google.nl/sear...session+across+subdomains

oisd.nl


Acties:
  • 0 Henk 'm!

  • wica
  • Registratie: Februari 2002
  • Laatst online: 21-02 09:21

wica

De duivel jacht op me

Ik zeg voor cross domein cookie's P3P

RFC | The Linux Document Project | gentoo.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okee bedankt iedereen _/-\o_ , nog even de oplossing die voor mij gewerkt heeft in Internet Explorer, Netscape, Opera, Mozilla en Firefox. op alle subdomeinen eenmaal inloggen, en ingelogd blijven als je tussen de subdomeinen wisselt.

Dit zijn de settings die ik veranderd heb in php.ini:

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain = .domeinnaam.com

; Check HTTP Referer to invalidate externally stored URLs containing ids.
session.referer_check = .domeinnaam.com

[ Voor 5% gewijzigd door Verwijderd op 27-08-2006 13:18 ]

Pagina: 1