[PHP] Controleren of cookies aan staan*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een kleine functie geschreven om te kijken of cookies aan of uit staan in de browser van de bezoeker:

code:
1
2
3
4
5
6
7
8
9
10
11
static public function cookiesON()
      {
        setcookie("test", "cookiesON", time() + 360);
        if(isset($_COOKIE["test"]))
        {
            echo "cookies aan";
        }else
        {
        echo "cookies uit";
       }
      }


wanneer ik gewoon de cookies in de browser aan laat staan en ik laad de pagina krijg ik "cookies uit" wanneer ik de pagina gewoon herlaad krijgi k "cookies aan" als ik de pagina erna dan opnieuw blijf laden krijg ik het juiste resultaat "cookies aan". Dus enkel de eerste keer dat ik de pagina laad gaat het mis :s

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Je weet wat cookies zijn? Kleine stukjes tekst die je naar de browser toe stuurt die je bij de volgende request(s) weer terug krijgt?

Je zult dus _altijd_ een extra request moeten doen om te kunnen zien of cookies worden ondersteund of niet :)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

En je echo'd nu sowieso de tekst 'cookies' uit. Nou maakt dat niet veel uit, want mocht het aan staan, dan zie je de 'cookies aan' tekst ook wel, maar enigsinds raar is het wel: het is immers of het een, of het ander. Dus ik zou de cookies uit, in een else doen binnen de if lus.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Gewoon na je setcookies een header redirect of een JS redirect doen naar dezelfde pagina...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GJtje schreef op maandag 31 augustus 2009 @ 00:20:
En je echo'd nu sowieso de tekst 'cookies' uit. Nou maakt dat niet veel uit, want mocht het aan staan, dan zie je de 'cookies aan' tekst ook wel, maar enigsinds raar is het wel: het is immers of het een, of het ander. Dus ik zou de cookies uit, in een else doen binnen de if lus.
sorry een foutje in de post van de code. gelijk het nu staat heb ik het dus getest.
Gewoon na je setcookies een header redirect of een JS redirect doen naar dezelfde pagina...
uhm ik doe deze test op elke pagina dus ik ga niet elke request dubbel doen lijkt me niet echt efficient...
Je weet wat cookies zijn? Kleine stukjes tekst die je naar de browser toe stuurt die je bij de volgende request(s) weer terug krijgt?

Je zult dus _altijd_ een extra request moeten doen om te kunnen zien of cookies worden ondersteund of niet :)
ja ik weet wat cookies zijn.... bestaat er echt geen betere methode om te checke of een gebruiker zijn cookies aan of uit heeft... ik heb de check vooral nodig op de inlog pagina dat is dus de eerste pagina waar de gebruiker op te recht komt, wanneer hij cookies af heeft staan moet hij onmiddelijk een foutboodschap krijgen en niet pas bij een volgende request...

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Verwijderd schreef op maandag 31 augustus 2009 @ 00:38:
[...]
ja ik weet wat cookies zijn.... bestaat er echt geen betere methode om te checke of een gebruiker zijn cookies aan of uit heeft... ik heb de check vooral nodig op de inlog pagina dat is dus de eerste pagina waar de gebruiker op te recht komt, wanneer hij cookies af heeft staan moet hij onmiddelijk een foutboodschap krijgen en niet pas bij een volgende request...
Zet een extra code in je formulier en check deze na versturen op je cookievariabele. klopt deze niet, melding ;)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op maandag 31 augustus 2009 @ 00:38:
[...]
uhm ik doe deze test op elke pagina dus ik ga niet elke request dubbel doen lijkt me niet echt efficient...
Simpel gezegd hoef je niet elke request dubbel te doen. Enkel als een gebruiker geen cookie heeft dan hem redirecten naar een speciale pagina ( login pagina bijv ) waar je nog een extra check kan doen op de cookie, of je kan hem gelijk het login scherm voorschotelen ( hij heeft geen cookie, dus is niet ingelogd ).

Door het gewoon op elke pagina te doen zit je juist goed. Je code werkt toch ook gewoon goed afaik.
1e keer heb je nog geen cookie en ben je nog niet ingelogd ( oftewel redirect naar login page ), elke volgende keer ben je wel ingelogd en wordt je niet geredirect...

Je hoeft niet bij elke pageview een cookie vanaf scratch te zetten, hooguit update je de levenstijd met weer een extra uur... Binnen dat uur kun je je browser uitzetten etc. Je cookie blijft staan ( enkele opschoonprogramma's die cookies verwijderen uitgezonderd )

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 31 augustus 2009 @ 00:38:
[...]

ja ik weet wat cookies zijn.... bestaat er echt geen betere methode om te checke of een gebruiker zijn cookies aan of uit heeft...
Hoe had je dat zelf in gedachten? Je browser stuurt alleen cookies mee als ze gezet zijn. Als jij nog geen cookie gezet hebt, kun je dus nergens aan zien of ze al dan niet aan staan. Vervolgens kun je wel een cookie zetten, maar de enige plaats waar je die nieuwe cookie kan uitlezen is bij de volgende request omdat die dan pas met je request meegestuurd wordt (zoals je weet, je weet immers wat cookies zijn).

Dus: hoe had je zelf gedacht uit te kunnen lezen of cookies aan staan dan door een cookie te setten en bij het volgende request te checken of het inderdaad gezet is?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 20:51

krvabo

MATERIALISE!

Even een kleine opmerking tussendoor:

Een JS-oplossing met een hidden iframe, of een AJAXrequest bij een on(DOM)load, is dat geen oplossing?
Met javascript kun je ook cookies zetten, dan maak je even een testcookie ofzo, die je bij een volgende request weer verwijderd.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Cobalt
  • Registratie: Januari 2004
  • Laatst online: 28-08 14:11
-

[ Voor 100% gewijzigd door Cobalt op 31-08-2009 01:48 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
krvabo schreef op maandag 31 augustus 2009 @ 01:32:
Even een kleine opmerking tussendoor:

Een JS-oplossing met een hidden iframe, of een AJAXrequest bij een on(DOM)load, is dat geen oplossing?
Met javascript kun je ook cookies zetten, dan maak je even een testcookie ofzo, die je bij een volgende request weer verwijderd.
Tja, als iemand geen cookies aan heeft staan ga ik ervanuit dat hij ook geen JS aan heeft staan.

Btw, wat gaat er mis als de controle gewoon op alle pagina's zit?

Hoe ik het doe is het gewoon :
1 : inlogpagina waarop user zijn credentials invult en submit naar zichzelf
2 : inlogpagina checkt credentials en zet cookie en redirect naar opgevraagde pagina
3 : opgevraagde pagina checkt cookie en indien goed pagina tonen, anders redirect terug naar stap 1

Niet ingelogde gebruikers die een pagina opvragen die komen binnen op stap 3 en worden gelijk doorgestuurd naar stap 1.
Stap 2 is enkel een tussenscherm met gefeliciteerd dat u uw inlog onthouden heeft en een header 302 zodat mensen de tekst niet kunnen lezen.
Stap 1 / 2 handelen de cookie af, als deze er eenmaal is dan kan je oneindig stap 3 doen ( tenminste binnen de cookie tijd )

Maar als je hier al problemen mee hebt, zet je cookie tijd eens op 1 minuut en laat een pagina 5 minuten openstaan, zolang er geen nieuwe page-request plaatsvind kan de gebruiker die pagina ook gewoon zien ( is helemaal leuk als je met JS in die pagina een cookie zet, dan in php enkel controleren of die cookie gezet is en dan langdurige caching op je pagina's instellen, door je caching wordt je pagina niet bij de server opgevraagd, door je gecachede JS wordt elke keer een cookie aangemaakt. door slechte php-beveiliging wordt dit cookie ook nog geaccepteerd... )

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Gomez12 schreef op maandag 31 augustus 2009 @ 02:46:
[...]

Tja, als iemand geen cookies aan heeft staan ga ik ervanuit dat hij ook geen JS aan heeft staan.
Hoezo? Je hebt niet per sé JS nodig voor cookies of andersom. Ik browse af en toe ook gewoon met JS maar zonder cookies. En ik denk dat je dat op corporate computers ook kan verwachten.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik zou gewoon gaan ervoor om op de foutpagina een melding te tonen dat de user waarschijnlijk geen cookies accepteert en daardoor niet kan inloggen. Geen cookies = geen login (bij dan althans) dus dan is de melding vrij duidelijk.
Pagina: 1