PHP State Management (স্টেট ম্যানেজমেন্ট) PHP কুকিজ (Cookies) Estimated reading: 3 minutes 11 views Contributors সারাংশ: এই টিউটোরিয়ালে, আপনি cookies সম্পর্কে শিখবেন এবং কীভাবে কার্যকরভাবে cookies পরিচালনা করতে PHP setcookie() ফাংশনটি ব্যবহার করবেন। Cookies পরিচিতিঃওয়েব HTTP protocol এর উপর ভিত্তি করে কাজ করে। HTTP protocol হল stateless.যখন web browser , ওয়েব সার্ভার থেকে একটি page এর request করে, তখন web server page এর বিষয়বস্তুর সাথে responds জানায়। পরে, একই web browser আবার একই page এর request করে, এবং ওয়েব সার্ভারের কাছে কোন তথ্য নেই যে অনুরোধটি একই ওয়েব ব্রাউজার থেকে এসেছে।Cookies এই stateless challenge এর সমাধান করে।Cookie হল ডেটার একটি অংশ যা ওয়েব সার্ভার, ওয়েব ব্রাউজারে পাঠায়। ওয়েব ব্রাউজার এটি সংরক্ষণ করতে পারে এবং একই ওয়েব সার্ভারে পরবর্তী অনুরোধে এটি ফেরত পাঠাতে পারে। web server জানে যে একই cookie ব্যবহার করে একই web browser থেকে দুটি request আসে।Cookies গুলি ওয়েব cookie, HTTP cookies বা browser cookies নামেও পরিচিত। আমরা এটি সংক্ষিপ্ত করতে cookies ব্যবহার করব।নিচের flow চার্টটি ব্যাখ্যা করে কিভাবে cookies কাজ করেঃকিভাবে এটা কাজ করেঃপ্রথমত, ওয়েব ব্রাউজার ওয়েব সার্ভারে একটি request পাঠায়। ওয়েব সার্ভারে কোন তথ্য নেই, ওয়েব ব্রাউজার সম্পর্কে। ওয়েব সার্ভার একটি নাম return করে এবং value 1 সহ একটি cookie তৈরি করে এবং কুকিটিকে HTTP প্রতিক্রিয়া শিরোনামে সংযুক্ত করে। cookie তৈরি করতে, আপনি setcookie() ফাংশন ব্যবহার করবেন। দ্বিতীয়ত, ওয়েব ব্রাউজার cookie সংরক্ষণ করে। তৃতীয়ত, ওয়েব ব্রাউজার HTTP request এর শিরোনামে সংরক্ষিত cookie সহ দ্বিতীয় request-টি ওয়েব সার্ভারে পাঠায়। ওয়েব সার্ভারে, PHP $_COOKIE superglobal variable এর মাধ্যমে cookie access করতে পারে এবং সেই অনুযায়ী কিছু করতে পারে। অবশেষে, ওয়েব সার্ভার request এর বিষয়বস্তুর সাথে সাড়া দেয়। সাধারণত, কুকির মানের উপর ভিত্তি করে বিষয়বস্তু সহ ওয়েব ব্রাউজারে সাড়া দেয়।Web browser সর্বোচ্চ 4KB size-এ cookie সংরক্ষণ করতে পারে। যাইহোক, এটি ওয়েব ব্রাউজারগুলির মধ্যে আলাদা।কুকির মেয়াদ শেষ হওয়ার তারিখ আছে। সাধারণত, ওয়েব ব্রাউজার একটি নির্দিষ্ট সময়ের জন্য cookie সংরক্ষণ করে। এবং ওয়েব সার্ভার কুকির মেয়াদ শেষ হওয়ার সময় নির্দিষ্ট করতে পারে।কুকি web address (URL) সংরক্ষণ করে যা cookie তৈরি করা URL নির্দেশ করে। এবং ওয়েব ব্রাউজার সেই cookie ফেরত পাঠাতে পারে যা মূলত একই ওয়েব address দ্বারা set করা হয়েছিল। অন্য কথায়, একটি website অন্য website দ্বারা set করা cookie পড়তে সক্ষম হবে না।বেশিরভাগ আধুনিক ওয়েব ব্রাউজার ব্যবহারকারীদের cookies accept করতে পছন্দ করে। অতএব, গুরুত্বপূর্ণ তথ্য সংরক্ষণের জন্য আপনার সম্পূর্ণরূপে cookies এর উপর নির্ভর করা উচিত নয়।কেন cookiesব্যবহারঃসাধারণভাবে, website গুলি ব্যবহারকারীর অভিজ্ঞতা বাড়াতে cookies ব্যবহার করে। উদাহরণস্বরূপ, আপনি cookie ছাড়া website ছেড়ে যাওয়ার পরে আপনাকে আবার log in করতে হবে ৷সাধারণত, আপনি নিম্নলিখিত উদ্দেশ্যে cookies ব্যবহার করবেনঃSession পরিচালনা: cookies ওয়েবসাইটকে ব্যবহারকারীদের এবং তাদের login informatio বা অন্য কিছু যা ওয়েব সার্ভারের মনে রাখা উচিত মনে রাখার অনুমতি দেয়। ব্যক্তিগতকরণ: cookies ব্যবহারকারীর পছন্দ, themes এবং অন্যান্য settings সংরক্ষণ করতে পারে। অনুসরণকরণ: cookies store ব্যবহারকারীর আচরণ। উদাহরণস্বরূপ, একটি Ecomerce website-এ, ব্যবহারকারীরা পূর্বে দেখেছেন এমন product গুলি রেকর্ড করতে আপনি কুকিজ ব্যবহার করতে পারেন ৷ পরে, ব্যবহারকারীরা আগ্রহী হতে পারে এমন related product গুলি recommend করতে আপনি এই information ব্যবহার করতে পারেন ৷ পিএইচপিতে cookie সেট করাঃPHP setcookie() function ব্যবহার করে কুকির সাথে কাজ করা easy করে তোলে। setcookie() function আপনাকে ওয়েব ব্রাউজারে একটি cookie তৈরি করতে একটি HTTP header পাঠাতে দেয়।<?php setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false ): boolনিম্নলিখিত সারণী setcookie() function এর argument গুলি ব্যাখ্যা করেঃArgumentMeaning$nameকুকির নাম$valueকুকির value. এটি কোনো একটি scalar value যেমন string বা integer হতে পারে।$expiresকুকির মেয়াদ শেষ হওয়ার সময় (একটি UNIX timestamp)। যদি $expires set করা না থাকে বা 0 তে set করা থাকে, ওয়েব ব্রাউজার বন্ধ হয়ে গেলে কুকির মেয়াদ শেষ হয়ে যাবে।$pathwebserver এর path যেখানে cookie পাওয়া যাবে। উদাহরণস্বরূপ, যদি path ( ‘/’ ) হয়, কুকিটি domain এর মধ্যে উপলব্ধ হবে।$domainযে domain-এ cookieপাওয়া যাবে।$secureযদি $secure true সেট করা থাকে, তাহলে কুকিটি ওয়েব ব্রাউজার থেকে একটি সুরক্ষিত HTTP (HTTPS) connection এর মাধ্যমে প্রেরণ করা উচিত।$httponlyযদি $httponly true হয়, cookie শুধুমাত্র HTTP protocol এর মাধ্যমে access করা যেতে পারে, JavaScript-এ নয়।PHP 7.3.0 অনুযায়ী, আপনি বিকল্প signature সহ একই setcookie() function ব্যবহার করতে পারেনঃsetcookie ( string $name , string $value = "" , array $options = [] ) : bool$options argument হল একটি array, যাতে এক বা একাধিক key থাকে, যেমন expires, path, domain, secure, httponly এবং samesite. samesite টি None, Lax বা Strict value নিতে পারে। আপনি অন্য কোন key ব্যবহার করলে, setcookie() ফাংশনটি একটি warning জারি করবে।setcookie() function টি সফলভাবে কার্যকর হলে তা true দেখায়। লক্ষ্য করুন যে এটি ওয়েব ব্রাউজার cookie accept করে কিনা তা নির্দেশ করে না। setcookie() function ব্যর্থ হলে false ফেরত দেয়।$_COOKIE$_COOKIE একটি associative array যা HTTP cookies সংরক্ষণ করে। একটি নাম দ্বারা একটি cookie access করতে, আপনি নিম্নলিখিত syntax ব্যবহার করুনঃ$_COOKIE['cookie_name']যদি কুকির নামের মধ্যে dots (.) এবং spaces (' ') থাকে, তাহলে আপনাকে underscores (_) দিয়ে replace করতে হবে।Cookie সেট করা আছে কিনা তা পরীক্ষা করতে, আপনি isset() function টি ব্যবহার করুনঃ<?php if(isset($_COOKIE['cookie_name'])) { } $_COOKIE একটি superglobal variable, তাই এটি script এর যেকোনো জায়গা থেকে access করা যেতে পারে।Reading a cookieCookie value পড়ার আগে, আপনি সর্বদা এটি isset() function ব্যবহার করে সেট করা হয়েছে কিনা তা পরীক্ষা করা উচিতঃ<?php if (isset($_COOKIE['cookie_name'])) { // process the cookie value }Cookie একটি value সমান কিনা তা পরীক্ষা করতে, আপনি নিম্নলিখিত code ব্যবহার করুনঃ<?php if (isset($_COOKIE['cookie_name']) && $_COOKIE['cookie_name'] == 'value') { // ... }Deleting a cookieআপনি যদি একটি Cookie ব্যবহার না করেন, আপনি ব্রাউজারকে এটি মুছে ফেলতে বাধ্য করতে পারেন ৷ PHP এমন একটি function প্রদান করে না, যা সরাসরি একটি Cookie মুছে দেয়। যাইহোক, আপনি setcookie() function ব্যবহার করে একটি কুকি মুছে ফেলতে পারেন মেয়াদ শেষ হওয়ার তারিখ অতীতে set করে।নিম্নলিখিত code টি পরবর্তী page request-এ cookie_name সহ একটি cookie মুছে দেয়ঃunset($_COOKIE['cookie_name']); setcookie('cookie_name', null, time()-3600); PHP cookie উদাহরণঃনিম্নলিখিত উদাহরণটি দেখায় কিভাবে cookie ব্যবহার করে, নতুন বা ফিরে আসা visitor এর কাছে শুভেচ্ছা বার্তা প্রদর্শন করাতে হয় ৷<?php define('ONE_WEEK', 7 * 86400); $returning_visitor = false; if (!isset($_COOKIE['return'])) { setcookie('return', '1', time() + ONE_WEEK); } else { $returning_visitor = true; } echo $returning_visitor ? 'Welcome back!' : 'Welcome to my website!'; কিভাবে এটা কাজ করেঃপ্রথমে, একটি constant define করুন যা পরবর্তি এক সপ্তাহ store করবেঃdefine('ONE_WEEK', 7 * 86400);দ্বিতীয়, returning_visitor-কে মিথ্যাতে set করুনঃ$returning_visitor = false;তৃতীয়, name return সহ cookie চেক করুন। যদি cookie সেট করা না থাকে, তাহলে value one এবং মেয়াদ শেষ হওয়ার তারিখ এক সপ্তাহ দিয়ে তৈরি করুন। অন্যথায়, $returning_visitor variable টিকে true-তে সেট করুন।if (!isset($_COOKIE['return'])) { setcookie('return', '1', time() + ONE_WEEK); } else { $returning_visitor = true; }অবশেষে, $returning_visitor variable এর মানের উপর ভিত্তি করে greeting message প্রদর্শন করুন।যখন আপনি প্রথমবার page টির জন্য request পাটাবেন, তখন নিম্নলিখিত বার্তাটি আপনি দেখতে পাবেনঃWelcome to my website!এবং আপনি যদি web developer tool টি খোলেন, তাহলে নিচের ছবিতে দেখানো কুকিটি দেখতে পাবেনঃযেহেতু ওয়েব ব্রাউজার ইতিমধ্যেই name return এবং value 1 সহ cookie সংরক্ষণ করে, যদি পৃষ্ঠাটি রিফ্রেশ করেন, তাহলে আপনি একটি ভিন্ন message দেখতে পাবেনঃWelcome back!এই cookie webserver দ্বারা set করা, যা ৭ দিন ধরে চলবে। অবশ্যই, ওয়েব ব্রাউজার থেকে, আপনি manually cookie মুছে ফেলতে পারেন।সারাংশঃCookie হল ডেটার একটি অংশ যা ওয়েব সার্ভারে একটি ওয়েব ব্রাউজারে পাঠায় যে দুটি অনুরোধ একই ওয়েব ব্রাউজার থেকে এসেছে কিনা তা পরীক্ষা করতে। cookie সেট করতে PHP setcookie() function ব্যবহার করুন যা ওয়েব সার্ভার থেকে ওয়েব ব্রাউজারে HTTP header সহ পাঠানো হয়। PHP-তে cookies access করতে superglobal ভেরিয়েবল $_COOKIE ব্যবহার করুন। Next - PHP State Management (স্টেট ম্যানেজমেন্ট) PHP সেশন (Session)