Archief - Cookie set door jQuery wordt niet gelezen door PHP, maar wel door jQuery?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

-BVR-

Legacy Member
Zoals ik al op StackOverflow postte:

Met de jQuery cookie plugin set ik een cookie wanneer een user ergens op klikt in een boodschap:
Code:
$("#cookies-not-allowed a").click(function() {
    $.cookie("cookies-allowed", "true", {expires: 365});
    $("#cookies-not-allowed").slideUp(700);
});

Als de user dan naar een andere pagina op dat domein navigeert, controleer ik via PHP of de gesette cookie bestaat, en indien NIET wordt de boodschap nogmaals getoond.
PHP:
<?php if(!isset($_COOKIE['cookies-allowed'])) : ?>
    <div id="cookies-not-allowed">THE MESSAGE</div>
<?php endif; ?>

Dit werkt niet. Wat wel werkt is via jQuery te controleren op de cookie en dan het element te verbergen, maar dat gaat natuurlijk veel trager - en zou het graag server-side hebben.

Dit werkt dus wel:
Code:
if ($.cookie("cookies-allowed")) $("#cookies-not-allowed").hide();

bealzebub

Legacy Member
Uit de documentatie van jQuery cookie:

Code:
Create expiring cookie, [B]valid across entire site[/B]:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

Dus ik vermoed:

Code:
$("#cookies-not-allowed a").click(function() {
    $.cookie("cookies-allowed", "true", {expires: 365[B], path: '/' [/B]});
    $("#cookies-not-allowed").slideUp(700);
});

-BVR-

Legacy Member
bealzebub zei:
Uit de documentatie van jQuery cookie:

Code:
Create expiring cookie, [B]valid across entire site[/B]:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

Dus ik vermoed:

Code:
$("#cookies-not-allowed a").click(function() {
    $.cookie("cookies-allowed", "true", {expires: 365[B], path: '/' [/B]});
    $("#cookies-not-allowed").slideUp(700);
});

Dit had iemand inderdaad ookal op SO gezet. Het werkt. Thanks. Vind het nog altijd gek, want waarom kan jQuery het dan wel uitlezen over de hele website?

bealzebub

Legacy Member
Vanop Wikipedia:

The cookie domain and path define the scope of the cookie&#8212;they tell the browser that cookies should only be sent back to the server for the given domain and path. If not specified, they default to the domain and path of the object that was requested.

Volgens mij kan het via JS wel omdat je Javascript Origin voor alle pagina's (document) hetzelfde is en je dus het volledige cookie object (als één lange string) gaat uitlezen. Die plugin zou natuurlijk automatisch paths die niet voldoen uit het read gedeelte kunnen weghalen. T is weekend, nie veel goesting om het uit te zoeken :)

bealzebub

Legacy Member
BramVanroy zei:
Double post: werkt blijkbaar toch niet. Live example.

T gaat in elk geval door naar de server, dus t ligt zeker nie aan je cookies die nie met request meegaan (juist gecheckt via tcpdump). Der zal ier hopelijk een PHP developer zijn die je verder helpt. Je zou om te beginnen eens op je server die $_COOKIE hash kunnen loggen om te zien wat erin zit.

YaMo

Legacy Member
Ik denk dat ik het probleem ontdekt heb.
Als ik naar een pagina op je site ga waar ik al geweest ben voor ik die cookieboodschap wegklikte, haalt mijn browser die pagina volledig uit de cache (en in de cache zit de pagina met de boodschap).
Als ik naar een nieuwe pagina ga wordt de cookie wel mooi meegestuurd en verschijnt er geen boodschap meer.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan