Setcookie разные для разных URL - PullRequest
1 голос
/ 14 марта 2011

Привет, у меня проблема с набором cookie. У меня есть такой URL

http://www.myweb.com/series/Setayesh/Part-1
По этому URL я проверяю, установлен ли cookie этим
if(isset($_COOKIE['cookiename']))
{
 //Perform some operations
}
else
{
setcookie('cookiename',$value,time()+36000)
}

Хорошо работает для всех URL-адресов, таких как

http://www.myweb.com/series/Setayesh/Part-1
http://www.myweb.com/series/Setayesh/Part-1
http://www.myweb.com/series/Setayesh/Part-1
and so on

Но когда URL становится

<a href="http://www.myweb.com/series/Pezeshkan/Part-1" rel="nofollow">http://www.myweb.com/series/Pezeshkan/Part-1</a>
Условие if не выполняется, оно всегда входит в условие else в том же браузере. Что это за проблема? Когда я устанавливаю cookie, я не устанавливаю какой-либо URL, тогда почему он ведет себя по-разному для такого условия.

1 Ответ

5 голосов
/ 14 марта 2011

Проблема в том, что cookie-файл настроен на путь, который вы запрашиваете.В вашем случае вы выдаете cookie для пути

/series/Setayesh/Part-1

Так что, если этот путь изменится на

/series/Pezeshkan/Part-1

, вы больше не сможете видеть cookie, так как он был выпущен для другого пути.Функция setcookie имеет четвертый параметр «путь», который позволяет явно указать путь.Если вы установите «/», файл cookie будет действителен для всего домена:

setcookie('cookiename',$value,time()+36000, '/')

Это должно решить проблему.

...