I really don't know what the deal is. I set up my cookies in php:
$locale = 'en_US';
setcookie('locale', $locale);
And I access it in Javascript:
console.log(document.cookie);
weirdly this doesn't show the cookies. However, if I open the browser console and type document.cookie
, it shows all the cookies.
And if I refresh the page, the cookies get shown.
For some reason, cookies don't get sent to the browser when they are set.
Are cookies being stored at the end of the response? If yes, how can I make it, so that they are stored at the beginning?
The following piece of code just worked for me in Chrome, obviously within the same request
$locale = 'unique_number_to_differntiate_from_yours';
setcookie('different_cookie_name', $locale);
echo "<script> console.log(document.cookie); </script>";
exit ;
As pointed by Davin H , you need to ensure there is no output before you call setcookie , not even a space. The reason is that cookies are set using headers, and headers can not be set once you have output started.