জাভাস্ক্রিপ্ট কুকি
কুকি আপনাকে ব্যবহারকারীর তথ্য ওয়েব পেজে সংরক্ষন করার সুযোগ দেয়।
কুকি কী?
কুকি হলো আপনার কম্পিউটারে একটি ছোট টেক্সট ফাইল হিসেবে সংরক্ষিত ডাটা।
যখন ওয়েব সার্ভার ব্রাউজারে একটি ওয়েব পেজ পাঠায় এবং সার্ভার ব্যবহারকারী সম্পর্কে সকল তথ্য ভুলে যায় কারণ সার্ভার এবং ব্রাউজারের সাথে তখন কোন সম্পর্ক থাকে না।
"কিভাবে ব্যবহারকারীর সম্পর্কে তথ্য সংরক্ষন করা যায়" এই সমস্যা সমাধান করার জন্যই কুকি উদ্ভাবিত হয়েছেঃ
- যখন একজন ব্যবহারকারী একটি ওয়েবপেজে ভিজিট করে তখন তার নাম কুকি হিসেবে সংরক্ষন করা যায়।
- পরবর্তী সময়ে ব্যবহারকারী যখন ঐ পেজে ভিজিট করে তখন কুকি তাকে চিনতে পারে।
কুকিগুলো জোড়ায় জোড়ায়(name-value) সংরক্ষণ হয়ঃ
username = Azizur Rahman
ব্রাউজার থেকে সার্ভারে যখন কোন পেজের জন্য রিকুয়েস্ট পাঠানো হয়, পেজের কুকিগুলোও এই রিকুয়েস্টের সাথে পাঠানো হয়। এই ভাবেই সার্ভার ব্যবহারকারীর সম্পর্কে তথ্য মনে রাখতে পারে।
জাভাস্ক্রিপ্টের মাধ্যমে কুকি তৈরি
document.cookie প্রোপার্টির মাধ্যমে জাভাস্ক্রিপ্ট কুকি তৈরি করতে পারে, পড়তে পারে এবং ডিলেট করতে পারে।
জাভাস্ক্রিপ্টের মাধ্যমে এইভাবে কুকি তৈরি করা যায়ঃ
document.cookie="username = Azizur Rahman";
এছাড়াও আপনি কুকির মেয়াদ শেষ হওয়ার তারিখ(expiry date) নির্ধারণ করতে পারেন(UTC সময়ে)। ডিফল্টভাবে ব্রাউজার বন্ধ করার সাথে সাথে কুকি ডিলেট হয়ে যায়ঃ
document.cookie="username= SATT Academy; expires=Mon, 18 Dec 2017 12:00:00 UTC";
কুকি কোন পেজের জন্য হবে একটি প্যারামিটারের মাধ্যমে আপনি ব্রাউজারকে বলে দিতে পারেন। ডিফল্টভাবে কুকি বর্তমান পেজের জন্যই নেয়া হয়।
document.cookie="username= SATT Academy; expires=Mon, 18 Dec 2017 12:00:00 UTC; path=/";
জাভাস্ক্রিপ্টের মাধ্যমে কুকি পড়া
জাভাস্ক্রিপ্টের মাধ্যমে নিম্নলিখিত উপায়ে কুকি পড়া যায়ঃ
var x = document.cookie;
document.cookieএকটি স্ট্রিংয়ে সকল কুকিগুলো অনেকটা এইভাবে রিটার্ন করা হয়ঃ cookie1=value; cookie2=value; cookie3=value; |
জাভাস্ক্রিপ্টের মাধ্যমে কুকি পরির্বতন
জাভাস্ক্রিপ্টের মাধ্যমে যেভাবে আপনি কুকি তৈরি করেছেন, ঠিক একইভাবে কুকি পরিবর্তন করতে পারেনঃ
document.cookie="username= Azizur Rahman; expires=Mon, 18 Dec 2017 12:00:00 UTC; path=/";
পুরাতন কুকি মুছে ফেলা হয়েছে।
জাভাস্ক্রিপ্টের মাধ্যমে কুকি ডিলেট
কুকি ডিলেট করা খুবই সহজ, শুধুমাত্র "expires" প্যারামিটারে পূর্বের যেকোন তারিখ সেট করে দিতে হয়।
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
উল্লেখ্য যে আপনি যখন কুকি ডিলেট করবেন তখন কুকির ভ্যালু নির্ধারণ করা লাগবে না।
কুকি স্ট্রিং
document.cookie প্রোপার্টিটি দেখতে সাধারন টেক্সট স্ট্রিংয়ের মতো দেখায়। কিন্তু এটি সাধারণ স্ট্রিং নয়।
এমনকি আপনি যদি document.cookie তে একটি সম্পূর্ণ কুকি স্ট্রিং লিখেন, যখন আপনি এটি আবার পড়তে যাবেন ,তখন আপনি শুধু name-value এর জোড়ায় জোড়ায় দেখতে পাবেন।
আপনি যদি একটি নতুন কুকি সেট করেন, পুরাতন কুকি মুছে যায় না। নতুন কুকি document.cookie তে যোগ হয়, যদি আপনি পুনরায় document.cookie পড়তে যান তাহলে এমন কিছু দেখতে পাবেনঃ
cookie1=value; cookie2=value;
আপনি যদি একটি সুনির্দিষ্ট কুকির ভ্যালু খুজে পেতে চান, তাহলে আপনাকে অবশ্যই একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে।
জাভাস্ক্রিপ্ট কুকি উদাহরণ
নিচের উদাহরণে আমরা একটি কুকি তৈরি করবো, যা ভিজিটরের নাম সংরক্ষন করবে।
প্রথম বার ভিজিটর যখন ওয়েব পেজে প্রবেশ করবে তখন তাকে তার নাম পূরণ করতে বলা হবে। তারপর নামটি একটি কুকিতে সংরক্ষিত হবে।
পরবর্তীতে ভিজিটর যখন একই পেজে পূনরায় আসে, তখন সে একটি স্বাগত বার্তা পাবে।
উদাহরণস্বরূপ আমরা ৩টি জাভাস্ক্রিপ্ট ফাংশন তৈরি করবোঃ
- একটি ফাংশন কুকি ভ্যালু সেট করা জন্য
- একটি ফাংশন কুকি ভ্যালু পাওয়ার জন্য
- একটি ফাংশন কুকি ভ্যালু চেক করা জন্য
কুকি সেট করার ফাংশন
প্রথমে আমরা একটি ফাংশন তৈরি করি যা ভিজিটরের নাম একটি কুকি ভ্যারিয়েবলে সংরক্ষন করবেঃ
function setCookie(cname, cvalue, exdays) {
var date = new Date();
date.setTime(date.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+date.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
উদাহরণের ব্যাখ্যাঃ
উপরে ফাংশনের প্যারামিটারগুলোর মধ্যে প্রথমটি হলো কুকির নাম(cname), দ্বিতীয়টি কুকির ভ্যালু(cvalue) এবং শেষেরটি কুকির মেয়াদউত্তীর্ণের তারিখ(exdays)।
ফাংশনটি কুকির নাম, কুকির ভ্যালু এবং স্ট্রিংয়ের মেয়াদউত্তীর্ণের তারিখ একত্রে যুক্ত করে একটি কুকি তৈরি করে।
কুকি পাওয়ার ফাংশন
তারপর আমরা একটি ফাংশন তৈরি করি যেটি কুকির ভ্যালু রিটার্ণ করবেঃ
function getCookie(cname) {
var name = cname + "=";
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);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
ফাংশনের ব্যাখ্যাঃ
কুকির নাম(cname) প্যারামিটার হিসেবে নেয়।
অনুসন্ধানের জন্য cname + "=" টেক্সটের সাহায্যে একটি ভ্যারিয়েবল(name) তৈরি করেছি।
document.cookie কে সেমিকোলনে বিভক্ত করে ca(ca = document.cookie.split(";")) অ্যারেতে রাখি।
ca অ্যারেতে লুপের(i=0;i<ca.length;i++) মাধ্যমে অ্যারের প্রতিটি মান পড়ি(c =ca[i])।
যদি কুকি খুজে পাওয়া যায় (c.indexOf(name) == 0),তাহলে c.substring(name.length,c.length) কুকি ভ্যালু রিটার্ন করে।
আর যদি কুকি না পাওয়া যায়, তাহলে "" রিটার্ন করে।
কুকি চেক করার ফাংশন
সর্বশেষ,আমরা একটি ফাংশন তৈরি করি যা দিয়ে কুকি সেট হয়েছে কিনা তা চেক করে।
যদি কুকি সেট করা থাকে তাহলে এটি একটি স্বাগত বার্তা প্রদর্শন করবে।
আর যদি কুকি সেট করা না থাকে তাহলে setCookie ফাংশন কল করার মাধ্যমে ইহা একটি প্রোম্পট(prompt) বক্স প্রদর্শন করে ব্যবহারকারীর নাম চাইবে এবং ৩৬৫ দিনের জন্য ব্যবহারকারীর নাম সংরক্ষন করবে।
function checkCookie() {
var username=getCookie("username");
if (username!="") {
alert("Welcome " + username + "!");
}else{
username = prompt("Please enter your name:", "");
if (username != "" && username != null) {
setCookie("username", username, 365);
}
}
}
সকল ফাংশন একসঙ্গে দেয়া হলো
উদাহরণ
<!DOCTYPE html>
<html>
<head>
<title>জাভাস্ক্রিপ্ট উদাহরণ</title>
</head>
<body>
<button onclick="checkCookie()">ক্লিক করুন</button>
<script>
function setCookie(cname, cvalue, exdays) {
var date = new Date();
date.setTime(date.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+date.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
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);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
function checkCookie() {
var username=getCookie("username");
if (username!="") {
alert("Welcome " + username + "!");
}else{
username = prompt("Please enter your name:", "");
if (username != "" && username != null) {
setCookie("username", username, 365);
}
}
}
</script>
</body>
</html>
ফলাফল
উপরের উদাহরণটিতে checkCookie() ফাংশনটি পেজ লোড হওয়ার পর কাজ করবে।