Necuima Posted March 26, 2018 Share Posted March 26, 2018 (edited) Hi Larry, I'm having an issue that I don't understand to do with setting cookies in JS. I have re-read the section on cookies in the book (pp 358...). If I have the JS code within the module that uses it (a PHP module it so happens) it works just fine. But if I include that same code via <script type="text/javascript" src = its source></script> it does not set the cookie. I have checked and the script does get loaded and executes when called - it just does not set the cookie. No errors are indicated in either the FF or IE. I have Googled but can't find anything exactly related to this. I have tried with Firefox V56 and IE11 and both exhibit the same behavior. (Running with XAMPP/Windows 7). Do you have any insights into this behavior? Thanks as always, Necuima. Edited March 26, 2018 by Necuima Link to comment Share on other sites More sharing options...
Larry Posted March 28, 2018 Share Posted March 28, 2018 Hmmm...I don't have any insights. It sounds like you've done your due diligence in debugging this. Do you want to share the code or is there a place online I can see it for myself? Link to comment Share on other sites More sharing options...
Necuima Posted March 29, 2018 Author Share Posted March 29, 2018 (edited) Hi Larry, This is basically from quirksmode.org/js/cookies.html; function (update_and_go(url) { var n = url.indexOf("&kk"); var g_pk = url.slice(n + 4); var date = new Date(); date.setTime(date.getTime() + (1*24*60*60*1000); /* one day in milliseconds */ var expires = ; expires = "+date.toGMTString(); var name = "vbnefhwgfg"; /* just to obfuscate the name of the cookie */ document.cookie = name + "=" + g_pk + expires + "; path=/; domain=<?php echo $_SERVER['HTTP_HOST']; ?>"; alert(document.cookie); etc.... } If I include the code the alert shows blank but if I embed the code in the PHP module, the alert shows the cookie correctly. Again, any insights will be most appreciated. I had the same issue as a year or so ago in that I could not copy and paste the code - I had to key it in line by line and I hope that I have not made any mistakes! Thanks, Necuima Edited March 29, 2018 by Necuima Link to comment Share on other sites More sharing options...
Necuima Posted March 29, 2018 Author Share Posted March 29, 2018 I did make a typo - there should not be an opening bracket before the function name - Oops:-( Link to comment Share on other sites More sharing options...
Larry Posted March 31, 2018 Share Posted March 31, 2018 Ha! Happens all the time. Kudos for figuring it out and thanks for letting us know! Link to comment Share on other sites More sharing options...
Necuima Posted March 31, 2018 Author Share Posted March 31, 2018 Hi Larry, The typo is just in the post above - as mentioned, I had to key in the code above line by line and that's where I made the mistake that I was referring to. In the executing code there is no superfluous opening bracket. Again, I look forward to your comments. Thanks, Necuima P.S., I have ordered the 5th edition of PHP and MySQL :-) Link to comment Share on other sites More sharing options...
Larry Posted March 31, 2018 Share Posted March 31, 2018 Ah! There are a number of other typos: date.setTime(date.getTime() + (1*24*60*60*1000); /* one day in milliseconds */ Missing a closing parens before the semicolon. var expires = ; expires = "+date.toGMTString(); A number of problems there including no assigned value in the first statement, the unnecessary quotation mark in the second, and the plus sign. Thanks for ordering the book. Hope you like it! Link to comment Share on other sites More sharing options...
Necuima Posted March 31, 2018 Author Share Posted March 31, 2018 (edited) Hi Larry, thanks for getting back to me. The first missing closing parenthesis is another of my typos when I was keying in the code above line by line. I don't know why I can't copy and paste into this forum. Maybe it is something to do with my Windows 7 environment. Your second comment puzzled me too. It is exactly as per the example in in the quirksmode reference. I 'fixed' it and now the code works OK both embedded and included. It was a puzzlement to quote the King of Siam :-) Hope that you get a good Easter break - here in Oz it is a 4 day long weekend. Cheers, Necuima. Edited March 31, 2018 by Necuima Link to comment Share on other sites More sharing options...
Necuima Posted April 1, 2018 Author Share Posted April 1, 2018 Hi again Larry, FYI the 'fix' did not in the end work but no matter - I used a JS script from Github that worked. (I virus-scanned the code before using it). In case anyone else falls into the traps that I fell into, here's what I (re) learned (at my age re-learning is a frequent requirement:-) The Github JS code enabled me to set a cookie by including it in my initial PHP script. To enable that cookie to be accessible to PHP, another PHP module had to be called as the cookie data are transferred to PHP via the header (part of my re-learning). I called the second PHP module via JS window.location.replace and that worked reliably. Thanks again for your interest in this. Cheers from Oz, Necuima. Link to comment Share on other sites More sharing options...
Recommended Posts