[PHP]cookies en sessions, zo goed?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Voor het inloggen op mijn site gebruikte ik voorheen alleen sessions om de variabelen door te geven. Nu wilde ik cookies gebruiken, om het sessionid op te slaan, zodat ik de sessions steeds opnieuw kan gebruiken, dit heb ik op dit moment als volgt gedaan. Bij het inlog-script doe ik dit:
code:
1
2
3
4
5
6
7
$_SESSION['login_id']       = $login_row['id'];
$_SESSION['login_name']     = $login_row['name'];
$_SESSION['login_email']    = $login_row['email'];
$_SESSION['login_city']     = $login_row['city'];
$_SESSION['login_level']    = $login_row['level'];
$_SESSION['login']          = 1;
setcookie('sid', session_id());

Hiermee maak ik dus een cookie aan met het session-id erin. Na het inloggen wordt ik doorgestuurd naar de index-pagina, waar ik check of er een cookie gezet is:
code:
1
2
3
4
if (isset($_COOKIE['sid'])) {
    $sid = $_COOKIE['sid'];
    session_id($sid);
    }

Hiermee wordt dus de eventuele waarde van het session-id uitgelezen, en gebruikt. Het uitloggen doe ik als volgt:
code:
1
2
3
session_start();
session_destroy();
setcookie ('sid', '', time() - 3600);

Klopt dit zo? Qua volgorde, maar ook qua veiligheid e.d.? En deze code werkt niet wanneer de cookies uitstaan op de pc van de gebruiker. Opzich is dat niet zo'n probleem, omdat dat tegenwoordig (geloof ik) toch niet zovaak meer voorkomt, maar waarom werkt het eigenlijk niet?

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

Dr_Frickin_Evil schreef op 25 augustus 2004: En deze code werkt niet wanneer de cookies uitstaan op de pc van de gebruiker. Opzich is dat niet zo'n probleem, omdat dat tegenwoordig (geloof ik) toch niet zovaak meer voorkomt.
offtopic:
Volgens mij worden cookies steeds vaker geblokeerd ivm spy en ad-ware e.d.

[ Voor 5% gewijzigd door Sosabowski op 25-08-2004 23:39 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

Verwijderd

Misschien is het ook nog wenselijk om het sid bij het ip ergens op te slaan, voor de veiligheid.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

IorGie schreef op 25 augustus 2004 @ 23:38:
[...]


offtopic:
Volgens mij worden cookies steeds vaker geblokeerd ivm spy en ad-ware e.d.
Volgens mij niet; alleen cookies van buiten het domein worden geblocked. Anders worden zowel sessions als cookies onbruikbaar en ik gok het grootste gedeelte van Internet. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ehm, volgens mij expired een session na verloop van tijd
kijk maar eens hiernaar:
session-set-cookie-params
session-cache-expire

denk dat dat is wat je zoekt :)

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Valt mee, gorgi. Ik block altijd alle cookies handmatig, en heel veel sites doen het prima zonder. Online shops enzo stotteren wel vaak. Die, net als andere cookie-only sites, kunnen mij dan vaak ook vergeten, als het "shoppen" (kijken, kijken, niet kopen) niet eens mogelijk is zonder cookies.

[ Voor 5% gewijzigd door Room42 op 25-08-2004 23:52 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Erkens schreef op 25 augustus 2004 @ 23:49:
ehm, volgens mij expired een session na verloop van tijd
kijk maar eens hiernaar:
session-set-cookie-params
session-cache-expire

denk dat dat is wat je zoekt :)
Hoezo zoek ik dat? Heeft toch niet direct iets met mn vraag te maken? De vraag is, of deze manier goed is, en waarom dit niet werkt als cookies uitgeschakeld zijn.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Dat heeft er wel degelijk mee te maken. Wat je nu doet is redelijk dubbelop aangezien sessions zelf ook al een cookie met de sessionID zetten. Lees de gegeven linkjes eens door en je zult zien dat het nog veel makkelijker kan door de cookie params aan te passen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Ah oke, dus de tijd dat de session bestaat, kan ik zetten met session_cache_expire? Wat is dan in dit geval een geschikte waarde daarvoor? Ik wil deze liefst zo zetten dat deze pas verloopt, wanneer de gebruiker uitlogt.

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Ik heb het nu als volgt gedaan, ik wil de sessie 30 dagen bewaren. Zo zou het dus moeten werken?
code:
1
2
session_set_cookie_params(30*24*60*60);
session_start();

?

Hoe is dit eigenlijk bij GoT gedaan? Als ik nu op 'logout' klik hier bovenin, dan krijg je een lijst te zien met sessies van tot dik een jaar geleden. Hoe is dat in dat geval gedaan? Ik zou het liefst de sessies zolang laten bestaan totdat de gebruiker aangeeft deze te willen eindigen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Mwah, dan zul je dus moeten garanderen dat iedereen ooit een keer uitlogt en alleen een sessie starten waneer daadwerkelijk ingelogd wordt (niet daarvoor dus!)

React heeft afaik zijn eigen session handling geschreven voor het forum zodat hier meer controle over is.

Zorg er iig voor dat je of alleen de session functionaliteit gebruikt, of het helemaal zelf schrijft. Al die combinatie vormen (zoals je eigen voorstel aan het begin) zorgen alleen maar voor problemen, rare bugs en moeilijk te onderhouden code.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 14:02
Ik heb het opgelost door een functie te schrijven om de rechten van een een gebruiker te bepalen. Deze functie bestaat uit 3 delen:
- Deel 1 controleerd of de gebruiker post gegevens mee heeft gezonden en als dat is dan controleerd hij deze op correctheid van pass en user, retourneerd de bijbehorende rechten en maakt een cookie of sessie aan (a.d.h.v. keuze gebruiker).
- Deel 2 (als er geen post gegevens zijn) zoekt naar een lopende sessie controleerd mogelijke gegevens en retourneerd het bijbehorende rechtenniveau
- Deel 3 (als er ook geen sessie loopt) kijkt of er een cookie is en controleerd dan in de table met cookie-id, user-id en expire-time de expire-time en retourneerd a.d.h.v. user-id het correcte rechtenniveau

Dit lijkt mij de correcte manier om PHP-sessies en eigen cookie overzichtelijk te handlen. Nou heb ik 1x 50 regels ofzo aan code die ik op iedere gewenste pagina kan gebruiken.

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Je zou ook de gegevens in een database kunnen gooien en en de sid in een session danwel cookie, wat je nu doet vind ik persoonlijk nogal vaag....

Research is what I'm doing when I don't know what I'm doing.

Pagina: 1