কুকি হল ওয়েব সাইট দ্বারা ব্যবহারকারী অর্থাৎ user কে চিহ্নিত করার একটি বিশেষ পদ্ধতি।
কুকিকে HTTP কুকি , web কুকি অথবা browser কুকি নামেও ডাকা হয়ে থাকে। কুকি হল একটি ছোট জাভাস্ক্রিপ্ট ফাইল যা ওয়েব সাইট থেকে ব্যবহারকারীকে পাঠানো হয় এবং তা ব্যবহারকারীর ওয়েব ব্রাউজারে জমা হয় যখন ব্যবহারকারী অর্থাৎ user কোন ওয়েব সাইট ব্রাউজ করে। যখন ঐ ব্যবহারকারী পরবর্তীতে আবার সেই ওয়েব সাইট ব্রাউজ করে তখন কুকিতে সংরক্ষিত তথ্য বা data ঐ ওয়েব সাইট দ্বারা আবার retrieved করা হয়। ব্যবহারকারীর আগের activity অর্থাৎ ঐ ওয়েব সাইটে ব্যবহারকারী অর্থাৎ user আগে কি কি কাজ করেছে। যেমন - কোন কোন বাটনে ক্লিক করেছে, লগ-ইন করেছে কিনা, কোন কোন ওয়েব পেজ ব্রাউজ করেছে, কোন নাম দিয়ে রেজিস্ট্রেশান করেছে অর্থাৎ এককথায় ব্যবহারকারীকে চিহ্নিত বা identify করতে কুকি ব্যবহার করা হয়।
কুকি ব্যবহারকারীর কম্পিউটারে ভাইরাস ছড়ায় না বা ম্যাকওয়্যার সেটআপ করে না। বর্তমানে বিশেষ কিছু ধরণের কুকি রয়েছে যা আধুনিক ওয়েব সাইট গুলোত বিশেষ কাজ করে থাকে। যেমন - authentication cookie মেথড নির্ণয় করে ইউজার লগ-ইন অবস্থায় আছে কি নেই, অথবা যদি লগ-ইন অবস্থায় থাকে তবে কোন অ্যাকাউন্ট দিয়ে লগ-ইন আছে। এ ধরেণর তথ্য না জেনে ওয়েব সাইটের যে কোন স্পর্শকাতর পেজ ইউজারকে দেখাতে পারে না। এটা ওয়েবের জন্য হুমকি হয়ে দাঁড়াবে। কুকি কেবল মাত্র সেই সার্ভারই read করতে পারে যে সার্ভার এটা তৈরি করেছে। কুকি মূলত ব্যবহারকারীর কাজকে সহজ করতে তৈরি করা হয়েছে। জাভাস্ক্রিপ্ট একই সাথে কুকি তৈরি ও পুনরদ্ধার করতে পারে।
কিছু জাভাস্ক্রিপ্ট কুকির উদাহরণ হল নিম্নরূপ।
1. Name cookie - ব্যবহারকারী প্রথম কোন ওয়েব সাইটে তার ব্যবহারকারীর নাম দিয়ে প্রবেশ করলে সেটা কুকিতে জমা থাকে। সে আবার যখন ঐ সাইটে লগিন করে তখন তাকে আবার তার নাম দিয়ে একটি স্বাগতম বার্তা দেওয়া যেতে পারে আর এই নামটি কুকিতে সংরক্ষিত থাকে।
2. Password cookie – পাসওয়ার্ড-এর ব্যাপারটাও একই। দ্বিতীয় বার সাইটে লগিন করলে কুকি থেকে পাসওয়ার্ড পুনরুদ্ধার করা হয়।
3. Date cookie – দ্বিতীয় বার কোন সাইটে লগিন করলে আপনাকে জানিয়ে দেওয়া যেতে পারে আপনি শেষ কবে ঐ সাইটে লগিন করেছিলেন। এখানে পূর্বের তারিখ কুকিতে জমা থাকে।
নিচের উদাহরণে আমরা একটি কুকি তৈরি করেছি যেখানে ভিজিটরের নাম store করবে। প্রথমে ওয়েব সাইট ব্রাউজ করলে ব্যবহারকারীকে তার নাম ইনপুট করতে বলা হবে। এই নামটা কুকিতে জমা থাকবে। পরবর্তীতে ঐ ব্যবহারকারী অর্থাৎ user ঐ ওয়েব সাইটে প্রবেশ করলে তাকে একটি স্বাগতম বার্তা দেওয়া হবে। প্রথম আমরা একটি ফাংশন তৈরি করব যা ব্যবহারকারীর নাম একটি কুকি ভেরিয়েবলে জমা করবে।
নিচের উদাহরণে জাভাস্ক্রিপ্ট কোড গুলো দেখুন, এখানে একটি ফাংশন তৈরি করা হয়েছে।
function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; }
উপরের উদাহরণে ফাংশনটি কুকির নাম, কুকির মান অর্থাৎ value এবং কুকির মেয়াদউত্তীর্ণের তারিখ অর্থাৎ expire date ধারন করবে। এই ফাংশনে প্রথমে দিনকে একটি ভ্যালিড তারিখে রূপান্তর করা হয়েছে। তারপর কুকির expire date নির্ধারণ করা হয়েছে। তারপর কুকির নাম, কুকির মান এবং কুকির expire date অবজেক্টে document.cookie স্টোর করা হয়েছে।
তারপর নিচের মত করে অন্য আরেকটি জাভাস্ক্রিপ্ট ফাংশন তৈরি করা হয়েছে , যার কাজ হল নির্দিষ্ট কুকি return করা।
function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) { return unescape(y); } } }
উপরের ফাংশনটি কুকির নাম ও মান উদ্ধার করতে একটি অ্যারে তৈরি করে। তারপর এটা পরিক্ষা করে দেখে নির্দিষ্ট কুকি পাওয়া যায় কিনা, যদি পাওয়া যায় তবে কুকির মান return করে।
সবশেষে একটি জাভাস্ক্রিপ্ট ফাংশন তৈরি করা হয়েছে যা ব্যবহারকারীকে একটি স্বাগতম বার্তা দেখাবে যদি কুকি পাওয়া যায়। আর যদি কুকি না পাওয়া যায় তবে একটি প্রমোট বক্স দেখাবে যেখানে user name ও পাসওয়ার্ড দিতে হবে। নিচে এর জন্য জাভাস্ক্রিপ্ট কোড গুলো দেখুন।
function checkCookie() { var username=getCookie("username"); if (username!=null && username!="") { alert("Welcome again " + username); } else { username=prompt("Please enter your name:",""); if (username!=null && username!="") { setCookie("username",username,365); } } }
এবার ওপরের সব গুলো জাভাস্ক্রিপ্ট কোড একসাথে নিচের উদাহরণে দেখুন।
<html> <head> <script type="text/javascript"> function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) { return unescape(y); } } } function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; } function checkCookie() { var username=getCookie("username"); if (username!=null && username!="") { alert("Welcome again " + username); } else { username=prompt("Please enter your name:",""); if (username!=null && username!="") { setCookie("username",username,365); } } } </script> </head> <body onload="checkCookie()"> </body> </html>