Как настроить файлы cookie для домена?

  • Автор темы argonec
  • 30
  • Обновлено
  • 16, May 2024
  • #1
Я хотел бы, чтобы этот скрипт устанавливал файлы cookie для домена. Прямо сейчас, если он установит файлы cookie, скажем, для: www.mysite.com/page_1/something.html

эти файлы cookie будут бесполезны для www.mysite.com/page_2/something.html

Есть ли способ заставить этот скрипт просто устанавливать файлы cookie для www.mysite.com

независимо от того, что идет после /forward?
 

<script type="text/javascript">

function setCookie(c_name,value,expiredays) {

var exdate=new Date()

exdate.setDate(exdate.getDate()+expiredays)

document.cookie=c_name+ "=" +escape(value)+((expiredays==100) ? "" : ";expires="+exdate)

}

function getCookie(c_name) {

if (document.cookie.length>0) {

c_start=document.cookie.indexOf(c_name + "=")

if (c_start!=-1) {

c_start=c_start + c_name.length+1

c_end=document.cookie.indexOf(";",c_start)

if (c_end==-1) c_end=document.cookie.length

return unescape(document.cookie.substring(c_start,c_end))

}

}

return null

}

onload=function(){

document.getElementById('myCheck').checked = getCookie('myCheck')==1? true : false;

}

</script>

<input type="checkbox" value="1" id="myCheck" onclick="set_check();">

Код (разметка):

argonec


Рег
19 Jan, 2013

Тем
1

Постов
1

Баллов
11
  • 29, May 2024
  • #2
Вот, попробуй мой:
 

var Cookies = {

'delete' : function(name, path, domain) {

this.get(name) && this.set(name, '', 0, path, domain);

}, // Cookies.delete

get : function(name) {

return name && (name = d.cookie.match(

new RegExp('(^|;)\\s*' + name + '\\s*=\\s*([^;]*)')

) ? unescape(name[2]) : null);

}, // Cookies.get

set : function(name, value, time, path, domain, secure) {

if (

'undefined' == typeof time ||

time === false

) time = 34158171600000; // 6 June 3052, 10:00AM EST

if (Number.isInteger(time)) time = new Date(time);

if (time instanceof Date) time = time.toGMTString();

d.cookie = name + '=' + escape(value) +

'; expires=' + time +

(path ? '; path=' + path : '') +

(domain ? '; domain=' + domain : '') +

(secure ? '; secure' : '');

}, // Cookies.set

setAfter : function(name, value, time, path, domain, secure) {

this.set(name, value, time ? new Date().getTime() + time : false, path, domain, secure);

} // Cookies.setAfter

} // Cookies

Код (разметка): с помощью set я передаю время в MS или как экземпляр даты... ИЛИ как текст. Если вы опустите дату, предполагается, что вы хотите установить ее «навсегда». (ну или хотя бы до Воббли дня) Я также передаю все остальные параметры, которые вы можете установить. Моя процедура получения файлов cookie может вас заинтересовать, она намного чище/меньше/проще.

Одно простое регулярное выражение, циклы не нужны. Смех в том, что это ДЕЙСТВИТЕЛЬНО тот тип вещей, которые должны быть встроены в JavaScript, но загадочным образом так и не прошли стадию предложения ECMA.

Вы даже предлагаете это, а орган по стандартизации говорит: «Ну зачем вам это нужно?!?» - даже несмотря на то, что они добавляют бесконечную чушь к объекту «Математика», чтобы объяснить, что некоторые люди ленятся набирать «1 -»
 

ThisIsPhoenix


Рег
04 Jan, 2016

Тем
0

Постов
3

Баллов
3
  • 11, Jun 2024
  • #3
Получил это решение, используя это вместо этого:
 

function setCookie(name,value,days) {

if (days) {

var date = new Date();

date.setTime(date.getTime()+(days*24*60*60*1000));

var expires = "; expires="+date.toGMTString();

}

else var expires = "";

document.cookie = name+"="+value+expires+"; path=/; domain=mysite.com"

}

function getCookie(name) {

var nameEQ = name + "=";

var ca = document.cookie.split(';');

for(var i=0;i < ca.length;i++) {

var c = ca[i];

while (c.charAt(0)==' ') c = c.substring(1,c.length);

if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

}

return null;

}

Код (разметка):
 

prodoves


Рег
16 Apr, 2013

Тем
0

Постов
2

Баллов
2
Тем
49554
Комментарии
57426
Опыт
552966

Интересно