Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Установка cookie для всего домена (https://javascript.ru/forum/misc/3090-ustanovka-cookie-dlya-vsego-domena.html)

grefon 17.03.2009 14:58

Установка cookie для всего домена
 
Подскажите, как установить cookie для всего домена а не только для отдельного каталога. Тоесть есть домен mysite.com, в нем есть два подкаталога mysite.com/cat1 и mysite.com/cat2. Так вот в mysite.com/cat1 в index.htm есть код:

function writeCookie(name, value, expires, path, domain, secure) {
document.cookie = 
name +"=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
}


при вызове функции cookie нормально создаются, но прикрепляются только к mysite.com/cat1, и в mysite.com/cat2 их уже нет. Как сделать чтобы куки имели путь mysite.com а не подкаталога?

Андрей Параничев 17.03.2009 15:19

В path указывать "/".

grefon 17.03.2009 15:26

А я указывал. Но без результата.
Просто когда я задаю параметр path = / то кука (имя: name; значение: 23) имеет вид:
cat1 name: 23/

Без параметра path кука выглядит просто cat1 name: 23
И мне не нужно чтобы к 23 что-то добавлялось.
Как сделать чтобы путь cat1 перед name не прописывался?

Потому что в каждом каталоге куки прописываются свои:
cat1 name: 23
cat2 name: 0
cat3 name: 23

А мне нужна одна кука для всего сайта с именем name и значением 23.

Помогите пожалуйста!

Андрей Параничев 17.03.2009 15:50

Как у вас устанавливаются куки, отпостите вызовы функции.
Если переменная называется "name", то перед ней ничего не должно быть.

grefon 17.03.2009 16:01

Сам javascript:
<SCRIPT LANGUAGE="JavaScript">

function readCookie(name) { 
var xname = name + "="
var xlen = xname.length
var clen = document.cookie.length
var i = 0
while(i < clen){
       var j = i + xlen
       if (document.cookie.substring(i, j) == xname)
		return getCookieVal(j)
       i = document.cookie.indexOf(" ",1) + 1
       if (i == 0)  break
}
return null
}

function getCookieVal(n){
var endstr = document.cookie.indexOf(";", n)
if (endstr == -1)
	endstr = document.cookie.length
return unescape(document.cookie.substring(n, endstr))
}

function writeCookie(name, value, expires, path, domain, secure) {
document.cookie = 
name +"=" + escape(value) +
((expires) ? "; expires="  + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
}
</SCRIPT>


Код вызыва функции:

<a href="#" onclick="writeCookie('name', '23'); show1(); return false;">Есть</a>


show1(); return false; - это еще из другого скрипта выполняется.

ZoNT 17.03.2009 16:52

writeCookie('name', '23','','\/');

grefon 18.03.2009 01:33

Урра! Получилось при таком вареанте:
onclick="setCookie('name', '23', '','/', 'mysite.com','');

ВСЕМ СПАСИБО ЗА ПОМОЩЬ!


Часовой пояс GMT +3, время: 17:58.