php setcookie не работает с вызовом ajax

У меня есть страница, test.php, со следующим кодом:

<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> 

У меня есть страница SetCookie.php со следующим кодом:

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

Когда нажата кнопка test.php, я использую XMLHttpRequest для вызова моей страницы SetCookie.php. Страница выполняется, потому что если я добавлю в нее эхо, я получаю это в ответе xmlhttp. Однако TestCookie, похоже, не работает.

Если в text.php, я делаю ту же самую команду, найденную в SetCookie.php, cookie затем устанавливается соответственно для всех сеансов браузера.

Даже после того, как я закрываю / открываю браузер, cookie остается неизменным, когда я однажды установил его на моей странице test.php вручную.

—-РЕДАКТИРОВАТЬ—–

Я добавил:

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

на самом верху test.php, однако, когда я перезагружаю страницу, она никогда не показывает обновленный файл cookie … потому что этот файл cookie уже установлен без параметра «/» и не может быть изменен позже, с помощью кнопки «/ ".

После очистки кеша и работы с предлагаемым кодом я удалил файлы cookie из браузера и использовал добавленный параметр для метода set, я смог манипулировать файлами cookie со всех страниц !!! Спасибо большое!!

Если вы не добавляете значение $path в setcookie() , по умолчанию оно соответствует «текущему каталогу». Это означает, что если вы установите cookie из /web/DEV/Classes/SetCookie.php , cookie будет установлен в /web/DEV/Classes/ , и что-либо выше этого пути не увидит этот файл cookie.

Чтобы исправить это, добавьте определенный $ path to setcookie. Если ваше приложение работает на корне домена (example.com), используйте '/' . Если он находится в подпапке (example.com/myapp/), используйте '/myapp/'

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

Я думаю, вы должны изучить параметр пути setcookie. Установите его в «/», чтобы он был доступен из всех каталогов / страниц сайта.