ورود

View Full Version : ایجاد کوکی در جاوا اسکریپت



ali.poorbazargan
پنج شنبه 27 تیر 1392, 15:08 عصر
سلام
دوستان بنده راجعبه ایجا کوکی در js یکم دچار مشکل شدم .
نمیدونم چرا نمیتونم syntax ش رو متوجه بشم .
مثلا من با کد:

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + "; expires="+exdate.toUTCString();
document.cookie=c_name + = + c_value;
}


کوکی ایجاد میکنم و همه چیز از جمله expire date و ... درست ثبت میشه، ولی وقتی کد رو به این صورت تغییر میدم :

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value);
document.cookie=c_name + = + c_value; "expires="+exdate.toUTCString();
}


دیگه expire date من درست ثبت نمیشه و به حالت session در میاد .
و برای مثال من از هیچ حالتی نتونستم path یا domain رو مدیریت کنم .

چندین منبع از جمله W3schools رو هم مطالعه کردم ولی متاسفانه نتیجه نگرفتم .

ممنون میشم یه syntax کامل به بنده بگین .

afshin9032
پنج شنبه 27 تیر 1392, 18:53 عصر
از پلاگین cookie در jQuery استفاده کن .

jalil_gh
جمعه 28 تیر 1392, 16:34 عصر
برای ذخیره کوکی با جاوااسکریپت در مرورگر شما باید مقدار document.cookie رو برابر با یک رشته قرار بدید. فرمت این رشته باید به صورت ذیر باشه.
"name=value; max-age=seconds; path=path; domain=domain; secure"
تو این رشته name، نام کوکی موردنظره، value مقداره، max-age زمان به ثانیه است که تعیین میکنه چه مدت کوکی باید ذخیره بشه، path مسیریه که کوکی در اون قابل دسترسیه، domain هم نام دامنه‌ای که کوکی قابل دسترسیه، secure هم مشخص میکنه که هر وقت کانکشن شما از نوع https بود کوکی ارسال بشه وگرنه ارسال نشه.
document.cookie = "myName=myValue; max-age=100000; path=/; domain=www.example.com";
برای راحتی کار شما میتونید یه تابع بنویسید که این کارو برای شما راحت کنه.

ali.poorbazargan
شنبه 29 تیر 1392, 12:51 عصر
ممنون از شما
این تابع اشکالش چیه که expire یا همون max-age رو ثبت نمیکنه و session میشه ؟



function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value);
document.cookie=c_name + "=" + c_value + "; max-age=" + exdate.toUTCString();
}


یعنی درواقع غیر از همون name و value هیچ چیز دیگه ای رو نمیتونم ثبت کنم . مثل path یا domain

jalil_gh
شنبه 29 تیر 1392, 13:07 عصر
max-age باید به صورت ثانیه باشه نه به صورت dateTime. تو کد شما max-age یه چیزی تو این مایه‌ها در میاد
max-age=Tue, 30 Jul 2013 09:15:18 GMT
شما میتونید تابع خودتونو به این صورت بنویسید.
function setCookie(c_name,value,exdays) {
var days = exdays * 24 * 60 * 60;
var c_value = escape(value);
document.cookie=c_name + "=" + c_value + "; max-age=" + days;
}

elhamkarimikarimi
شنبه 21 دی 1392, 01:18 صبح
سلام
کد شما درسته فقط این کد دومی رو یه جای کوچکش ور اشتباه کردی.

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value);
document.cookie=c_name + = + c_value+ ";expires="+exdate.toUTCString();
}

kb0y667
یک شنبه 06 بهمن 1392, 04:37 صبح
خط 6 همون چیزی که خودت نوشتی رو با دقت ببین این بود :

document.cookie=c_name + = + c_value; "expires="+exdate.toUTCString();
باید بشه :

document.cookie=c_name + "=" + c_value + "; expires="+exdate.toUTCString();