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

  • Автор темы True.72
  • Обновлено
  • 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();">

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

True.72


Рег
26 Jan, 2011

Тем
80

Постов
203

Баллов
633
  • 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

Тем
59

Постов
175

Баллов
480
  • 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

Тем
59

Постов
159

Баллов
474
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно