[PHP] Setcookie werkt perfect, alleen niet op homepage

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een website waar ik behulp van setcookie() de userid van gebruikers opsla. Het werkt perfect, behalve als je voor het eerst weer op de pagina komt. Zodra je ergens op de site hebt geklikt, ben je ingelogd, maar dus niet op de homepage!

Ik weet niet of dit helpt, maar hier is de cookie-code:

PHP:
1
2
3
4
5
6
7
8
9
session_start();

if(isset($_COOKIE['useridcode'])) {

    $_SESSION['uid'] = $_COOKIE['useridcode'];

}

session_register('uid');


Ik gebruik voor elke pagina dezelfde index.php, dus het ligt niet aan het feit dat er iets verkeerd staat in de index.php

[ Voor 5% gewijzigd door Verwijderd op 28-05-2003 10:09 ]


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Hoe zet je je cookie? Ik denk dat je de expire-time van je cookie niet helemaal goed hebt staan. Sessions hebben met dit probleem overigens weinig te maken, _denk_ ik.

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
setcookie('useridcode', $_SESSION['uid'], (time()+60*60*24*30),'/');


Maar zoals ik al zei, gaat er niks mis met het setten van de cookie, alleen bij het eerste keer inlezen.

[ Voor 37% gewijzigd door Verwijderd op 28-05-2003 10:13 ]


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 28 May 2003 @ 10:12:
PHP:
1
2
setcookie('useridcode', $_SESSION['uid'], 
(time()+60*60*24*30),'/');


Maar zoals ik al zei, gaat er niks mis met het setten van de cookie, alleen bij het eerste keer inlezen.
Ja daarom vroeg ik het ook. Hij kan de cookie wel zetten, maar als de tijd niet goed staat, wordt de cookie gedelete op het moment dat je browser afsluit en weer aangemaakt als je weer op de site komt. :)

.edit:
Bestaat de cookie wel als je voor de eerste keer weer op de site komt? (print_r($_COOKIE)). En bestaat bij het setten van de cookie $_SESSION['uid']... ?

[ Voor 33% gewijzigd door RedRose op 28-05-2003 10:20 . Reden: info toegevoegd ]

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar dat kan niet verklaren waarom je bent ingelogd (met naam en al) na de eerste keer klikken op de site... toch?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Over die print_r: de userid is gewoon geset. Pas na de eerste klik is ook de session-id geset.

Acties:
  • 0 Henk 'm!

Verwijderd

misschien heeft het te maken met dit:

wanneer je het cookie zet in een bepaalde map, geldt deze voor die map en al zijn submappen. als je een cookie wilt zetten die voor de gehele site geldt, dan moet die in de root gezet worden.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij wordt geset op de index.php die voor elke pagina wordt gebruikt, dus dat kan het ook niet zijn. Nogmaals: er is geen enkel probleem met het setten van de cookie, alleen met het inlezen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Opgelost! Blijkbaar is $_SESSION['uid'] niet gelijk aan $uid... Ik heb regel 9 toegevoegd en nu werkt-ie perfect!

PHP:
1
2
3
4
5
6
7
8
9
10
11
session_start();

if(isset($_COOKIE['PrCaUID'])) {

    $_SESSION['uid'] = $_COOKIE['PrCaUID'];

}

$uid = $_SESSION['uid'];

session_register('uid');


Thanks!

Acties:
  • 0 Henk 'm!

Verwijderd

Ten eerste is je $session_register overbodig. Of het daardoor fout gaat weet ik eigenlijk niet. Zou natuurlijk kunnen, omdat $uid niet bestaat overschrijft hij $_SESSION['uid']

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 28 May 2003 @ 10:25:
Opgelost! Blijkbaar is $_SESSION['uid'] niet gelijk aan $uid... Ik heb regel 9 toegevoegd en nu werkt-ie perfect!

PHP:
1
2
3
4
5
6
7
8
9
10
11
session_start();

if(isset($_COOKIE['PrCaUID'])) {

    $_SESSION['uid'] = $_COOKIE['PrCaUID'];

}

$uid = $_SESSION['uid'];

session_register('uid');


Thanks!
That would have been my next question.. :P De cookienaam is uiteraard niet hetzelfde als wat er in de cookie staat.

.edit: En Mookai heeft gelijk. :P

[ Voor 27% gewijzigd door RedRose op 28-05-2003 10:28 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 mei 2003 @ 10:25:
Opgelost! Blijkbaar is $_SESSION['uid'] niet gelijk aan $uid... Ik heb regel 9 toegevoegd en nu werkt-ie perfect!

PHP:
1
2
3
4
5
6
7
8
9
10
11
session_start();

if(isset($_COOKIE['PrCaUID'])) {

    $_SESSION['uid'] = $_COOKIE['PrCaUID'];

}

$uid = $_SESSION['uid'];

session_register('uid');


Thanks!
Lees de manual eens zou ik zeggen. Want dit is dus dubbel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dubbel? Hoezo?

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Als je cookies gebruikt om 'state' te bewaren tussen pagina's heb je in principe geen sessions nodig. Lees dit stuk over sessions er maar eens op na. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK, maar als je browser cookies nu weigert?

Acties:
  • 0 Henk 'm!

Verwijderd

Nou als je iets toewijst aan de array $_SESSION dan wordt zoiets meteen opgenomen in de sessie (mits er een session_start() is geweest). Dus als jij eerst wat toewijst aan die array met een juist waarde en daar vervolgens weer lege waarde overheen schrijft met session_register('uid') dan gaat dat fout. Vervolgens heb je een surgogaat oplossing die eerst de eerder toegewezen waarde in de juiste waarde zet voor session_register, namelijk $uid

Acties:
  • 0 Henk 'm!

Verwijderd

RedRose schreef op 28 May 2003 @ 10:30:
[...]
Als je cookies gebruikt om 'state' te bewaren tussen pagina's heb je in principe geen sessions nodig. Lees dit stuk over sessions er maar eens op na. :)
Nou dat bedoelde ik niet helemaal eigenlijk. En lijkt me ook niet helemaal zo, als je automatisch wil inloggen heb je wel zoiets nodig. Of de manier veilig is, is nog maar de vraag natuurlijk.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 mei 2003 @ 10:31:
OK, maar als je browser cookies nu weigert?
Dan werkt je script al helemaal niet..., maar dat maakt voor de algemene werking en dus je probleem niet uit

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Verwijderd schreef op 28 mei 2003 @ 10:34:
Nou dat bedoelde ik niet helemaal eigenlijk. En lijkt me ook niet helemaal zo, als je automatisch wil inloggen heb je wel zoiets nodig. Of de manier veilig is, is nog maar de vraag natuurlijk.
Dat laatste is inderdaad nog maar de vraag. Maar je kan met cookies ook mensen automatisch laten inloggen (dat gebeurt op GoT ook), met daarachter een database ofzo. Ik bedoelde dat je niet persé de PHP-session support (dus session_start() etc) ervoor nodig had. :)

Sundown Circus

Pagina: 1