Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
127
rated 0 times [  133] [ 6]  / answers: 1 / hits: 25479  / 13 Years ago, tue, april 12, 2011, 12:00:00

I have a page, test.php, with the following code:



<html>
<body>
<form>
<script type=text/javascript>

function SendCookies(){

if (window.XMLHttpRequest)/* code for IE7+, Firefox, Chrome, Opera, Safari */
{ xmlhttp=new XMLHttpRequest(); }
else /* code for IE6, IE5 */
{ xmlhttp=new ActiveXObject(Microsoft.XMLHTTP); }

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status == 200)
{
alert('done');
}
}

xmlhttp.open(GET, /web/DEV/Classes/SetCookie.php?time= + new Date());
xmlhttp.send();

}

</script>

<input type=text id=txtInput name=txtInput/>
<input type=button id=btnSubmit name=btnSubmit value=Submit onclick=SendCookies()/>
<div id=divTest>
<?php
if (isset($_COOKIE[TestCookie])) {
echo $_COOKIE[TestCookie];
} else {
echo __Results__;
}
?>
</div>
</form>
</body>
</html>


I have a page, SetCookie.php, with the following code:



<?php 
$var = THIS IS A TEST;
setcookie(TestCookie, $var, time()+60*60*24*30);
?>


When test.php's button is clicked, i use XMLHttpRequest to call my SetCookie.php page. The page executes, becuase if i add an echo to it, i get that in the xmlhttp response. However, TestCookie does not seem to be getting set.



If in text.php, i do the same command found in SetCookie.php, the cookie is then set accordingly for all browser sessions.



Even after i close / open the browser, the cookie remains unchanged from when i once set it in my test.php page manually.



----EDIT-----



I added:



if(!setcookie(TestCookie, A, time()+60*60*24*30, /)) {
echo FAIL;
}


to the very top of test.php, however when i reload the page, it never shows the updated cookie... because that cookie was already set without the ,/ parameter, and cannot be modified later, with the ,/ parameter.



After clearing the cache and working with the suggested code, i cleared my cookies from the browser and used the added parameter for the set method, i was able to manipulate the cookies from all pages!!! thank you so much!!


More From » php

 Answers
14

If you don't add a $path value to setcookie(), it defaults to the current directory. This means that if you set the cookie from /web/DEV/Classes/SetCookie.php, the cookie gets set to /web/DEV/Classes/, and anything above that path won't see that cookie.



To fix this, add a specific $path to setcookie. If your app runs on the domain root (example.com), use '/'. If it's in a subfolder (example.com/myapp/), use '/myapp/'



setcookie(TestCookie, $var, time()+60*60*24*30, '/');

[#92784] Monday, April 11, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jeanettee

Total Points: 209
Total Questions: 97
Total Answers: 98

Location: Papua New Guinea
Member since Thu, Jul 9, 2020
4 Years ago
;