1. #1

    Registered
    14/08/10
    Location
    Diest
    Posts
    2,419
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    8/16

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

    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 Code:
    <?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();
    no votes  

  2. #2
    bealzebub's Avatar
    Registered
    28/06/06
    Location
    Gent
    Posts
    376
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Uit de documentatie van jQuery cookie:

    Code:
    Create expiring cookie, valid across entire site:
    
    $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
    Dus ik vermoed:

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

  3. #3

    Registered
    14/08/10
    Location
    Diest
    Posts
    2,419
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    8/16
    Quote Originally Posted by bealzebub View Post
    This quote is hidden because you are ignoring this member. Show
    Uit de documentatie van jQuery cookie:

    Code:
    Create expiring cookie, valid across entire site:
    
    $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
    Dus ik vermoed:

    Code:
    $("#cookies-not-allowed a").click(function() {
        $.cookie("cookies-allowed", "true", {expires: 365, path: '/' });
        $("#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?
    no votes  

  4. #4
    bealzebub's Avatar
    Registered
    28/06/06
    Location
    Gent
    Posts
    376
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Vanop Wikipedia:

    The cookie domain and path define the scope of the cookie—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
    no votes  

  5. #5

    Registered
    14/08/10
    Location
    Diest
    Posts
    2,419
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    8/16
    Ach, ik ben al blij dat het werkt. Bedankt.
    no votes  

  6. #6

    Registered
    14/08/10
    Location
    Diest
    Posts
    2,419
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    8/16
    Double post: werkt blijkbaar toch niet. Live example.
    no votes  

  7. #7
    bealzebub's Avatar
    Registered
    28/06/06
    Location
    Gent
    Posts
    376
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by BramVanroy View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    no votes  

  8. #8
    YaMo's Avatar
    Registered
    19/02/06
    Location
    -
    Posts
    4,048
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/73
    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.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in