জাভাস্ক্রিপ্ট সহ সমস্ত কুকি সাফ করা হচ্ছে


উত্তর:


318
function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

মনে রাখবেন যে এই কোডটির দুটি সীমাবদ্ধতা রয়েছে:

  • এটি HttpOnlyপতাকা সেট সহ কুকিজ মুছে ফেলবে না , কারণ HttpOnlyপতাকাটি জাভাস্ক্রিপ্টের কুকিতে অ্যাক্সেসকে অক্ষম করে।
  • এটি কোনও Pathমান সহ সেট করা কুকিজ মুছবে না । (এটি সেই কুকিগুলির মধ্যে উপস্থিত হবে তা সত্ত্বেও document.cookie, তবে এটির Pathসাথে এটি নির্ধারণ করা একই মান উল্লেখ না করে আপনি এটি মুছতে পারবেন না ))

5
খুব সুন্দর, তবে পরীক্ষার পরে আমি দেখতে পেলাম যে কোনও সাইটে = ছাড়া একটি মাত্র কুকি থাকতে পারে এবং তারপরে এটি একটি নামহীন কুকি, আপনি আসলে এর মান পাবেন। সুতরাং যদি ইকোপোস == 1 name = ""হয় তবে নামহীন মানটি মুছতে আপনার পরিবর্তে এটি করা উচিত ।
ফিলিহো

59
সতর্ক থাকুন! যদি আপনার কুকিগুলি কোনও পাথ বা ডোমেন উপাদান ব্যবহার করতে কনফিগার করা থাকে তবে এই হ্যান্ডি স্নিপেটটি কাজ করবে না।
ড্যান ফাবুলিচ

1
সত্য। স্নিপেটটি সেই বিবরণগুলির জন্য আপনাকে জিজ্ঞাসা করতে সংশোধন করা যেতে পারে; তবে এটি বেশিরভাগ ক্ষেত্রে কাজ করে।
রবার্ট জে। ওয়াকার 17

7
পথ বা ডোমেনের তথ্য অন্তর্ভুক্ত করার জন্য কীভাবে এটি সংশোধন করা হবে?
Vuela

2
কমপক্ষে ক্রোমগুলিতে কুকিগুলি ";" দ্বারা পৃথক করা হয়, সুতরাং এটিকে সঠিকভাবে কাজ করতে trim()আমাদের অতিরিক্ত স্থান বা split('; ')(';' দ্বারা ') করতে হবে। আমি একটি সম্পাদনা প্রস্তাব করেছি।
ড্যানিয়েল কুচাল 31'17

124

এক রৈখিক

আপনি যদি এটিকে দ্রুত পেস্ট করতে চান তবে ...

document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });

এবং একটি বুকমার্কলেট জন্য কোড:

javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();

1
কিছু persistant ওয়েব সাইট ব্যাকআপ কুকিজ localStorageতাই window.localStorage.clear()পাশাপাশি সহায়ক হতে পারে
Klesun

75

এবং এখানে সমস্ত পাথ এবং ডোমেনের সমস্ত রূপগুলিতে (www.mydomain.com, mydomain.com ইত্যাদি) সমস্ত কুকিজ সাফ করার জন্য এখানে রয়েছে:

(function () {
    var cookies = document.cookie.split("; ");
    for (var c = 0; c < cookies.length; c++) {
        var d = window.location.hostname.split(".");
        while (d.length > 0) {
            var cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
            var p = location.pathname.split('/');
            document.cookie = cookieBase + '/';
            while (p.length > 0) {
                document.cookie = cookieBase + p.join('/');
                p.pop();
            };
            d.shift();
        }
    }
})();

10
এটি সেরা উত্তর হওয়া উচিত
কানন ফারজালি

3
এটি আমার জন্য ক্রোমে কাজ করে, যদিও গৃহীত উত্তরটি দেয় না
অরনি

2
উজ্জ্বল! প্রোডাকশন সার্ভারে না হয়ে আমার ডেভ সার্ভারে কাজ করেছে এমন আরও বেশ কয়েকজনকে চেষ্টা করার পরে, এই দু'টিতেই প্রথম কাজ করেছিলেন। খাঁটি সোনা!
ভেলোজেট

1
এটি আমার পক্ষে গৃহীত উত্তরের চেয়েও অনেক ভাল কাজ করে। ধন্যবাদ
guillaumepotier

শীর্ষস্থানীয় ডট সহ ডোমেনের জন্য কোড যুক্ত করতে হয়েছিল, আমার কুকিগুলির মধ্যে কিছু এটি রয়েছে, কিছু নেই, যদিও কোনও প্রাসঙ্গিক সাবডোমেন নেই। তবে এই পরিবর্তনগুলির সাথে, এটি আমার পক্ষে ভাল কাজ করে, আমি এখন পর্যন্ত চেষ্টা করেছি সবচেয়ে সম্পূর্ণ বাস্তবায়ন।
ব্লুয়েলফ

66

কিছুটা হতাশার পরে আমি নিজেই এই ফাংশনটি একসাথে ঠকিয়েছি যা একটি নামকৃত কুকিকে সমস্ত পথ থেকে মুছে ফেলার চেষ্টা করবে। আপনার প্রতিটি কুকির জন্য কেবল এটি কল করুন এবং আপনি আগে ছিলেন প্রতিটি কুকি মুছে ফেলার কাছাকাছি হওয়া উচিত।

function eraseCookieFromAllPaths(name) {
    // This function will attempt to remove a cookie from all paths.
    var pathBits = location.pathname.split('/');
    var pathCurrent = ' path=';

    // do a simple pathless delete first.
    document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;';

    for (var i = 0; i < pathBits.length; i++) {
        pathCurrent += ((pathCurrent.substr(-1) != '/') ? '/' : '') + pathBits[i];
        document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;' + pathCurrent + ';';
    }
}

সর্বদা হিসাবে বিভিন্ন ব্রাউজারের বিভিন্ন আচরণ থাকে তবে এটি আমার পক্ষে কাজ করে। উপভোগ করুন।


টমহ্যামন্ড, এটি সম্পূর্ণ নতুন প্রশ্ন হওয়া উচিত। প্রাথমিক সমস্যাগুলি হোস্ট করা ডোমেন বনাম হোস্টিং ডোমেন এবং হোস্টেড পৃষ্ঠাটি নিয়ন্ত্রণ করার জন্য আপনার দক্ষতার আশেপাশে।
অ্যান্টনিভিও

2
এটি এখনও কেবলমাত্র কুকিগুলি সরিয়ে ফেলবে না। এগুলি কেবলমাত্র HTTP- র মাধ্যমে সংশোধন করা যায়।
সানি আর গুপ্ত

14

আপনার যদি jquery.cookie প্লাগইনে অ্যাক্সেস থাকে তবে আপনি এইভাবে সমস্ত কুকি মুছতে পারেন:

for (var it in $.cookie()) $.removeCookie(it);

আমি এটি কেবল নিজের ওয়েবসাইটে চেষ্টা করেছি, যা সমস্ত কুকি মুছে ফেলেছে। @ কেরিন সামা কুকিজগুলি সাফ করার আগে এবং পরে কনসোলে নিম্নলিখিত কোডটি কার্যকর করার চেষ্টা করতে পারেন? "(এটির জন্য c। কুকি ()) কনসোল.লগ (এটি);
জিচি 23

জিচি আপনি jquery.cookie প্লাগইন পাশাপাশি jquery লাইব্রেরি অন্তর্ভুক্ত করেছেন?
ko1Rn

11

আমি যতদূর জানি ডোমেনে থাকা কোনও কুকির সেট কম্বল মুছার উপায় নেই। নামটি জানা থাকলে এবং স্ক্রিপ্টটি যদি কুকির মতো একই ডোমেনে থাকে তবে আপনি একটি কুকি সাফ করতে পারেন।

আপনি মানটি খালিতে এবং মেয়াদোত্তীকরণের তারিখটি অতীতের কোথাও সেট করতে পারেন:

var mydate = new Date();
mydate.setTime(mydate.getTime() - 1);
document.cookie = "username=; expires=" + mydate.toGMTString(); 

জাভাস্ক্রিপ্ট ব্যবহার করে কুকি ম্যানিপুলেট করার জন্য এখানে একটি দুর্দান্ত নিবন্ধ রয়েছে


11
আপনি কেবলমাত্র করতে পারেন document.cookie="username;expires=" + new Date(0).toGMTString()- কুকিটি 1 সেকেন্ড আগে বা 1970 সালে মেয়াদ শেষ হলে বেশি পার্থক্য নেই
ম্যাট বি

অনুচ্ছেদটির জন্য ধন্যবাদ!
tx291

7

সহজ। দ্রুত।

function deleteAllCookies() {
 var c = document.cookie.split("; ");
 for (i in c) 
  document.cookie =/^[^=]+/.exec(c[i])[0]+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT";    
}

2
পাথ পরিচালনা করে না।
স্কট স্মিথ

6

এখানে দ্বিতীয় উত্তর এবং ডাব্লু 3 স্কুলগুলি দ্বারা প্রভাবিত একটি উত্তর

document.cookie.split(';').forEach(function(c) {
  document.cookie = c.trim().split('=')[0] + '=;' + 'expires=Thu, 01 Jan 1970 00:00:00 UTC;';
});

কাজ করছে বলে মনে হচ্ছে

সম্পাদনা করুন: বাহ প্রায় জ্যাকের আকর্ষণীয়ের মতো ঠিক কীভাবে স্ট্যাক ওভারফ্লো এগুলি একে অপরের পাশে রাখে।

সম্পাদনা: এনভিএম যা আপাতদৃষ্টিতে সাময়িক ছিল


3

অনুভূত আমি কুকি সাফ করার জন্য এই পদ্ধতিটি ভাগ করব। সম্ভবত এটি কোনও সময়ে কারও পক্ষে সহায়ক হতে পারে।

var cookie = document.cookie.split(';');

for (var i = 0; i < cookie.length; i++) {

    var chip = cookie[i],
        entry = chip.split("="),
        name = entry[0];

    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

2

ডকুমেন্ট.কুকি ভেরিয়েবলটি দেখে আপনি একটি তালিকা পেতে পারেন। এগুলিকে সাফ করা কেবল তাদের সকলের উপর লুপিং এবং একে একে একে সাফ করার বিষয়।


2

আমি জানি না কেন প্রথম ভোট দেওয়া উত্তর আমার পক্ষে কার্যকর হয় না।

যেমন এই উত্তর বলেছেন:

ব্রাউজার কুকিজ মোছার জন্য 100% সমাধান নেই।

সমস্যাটি হ'ল কুকিগুলি কেবল তাদের কী "নাম" দ্বারা নয় বরং তাদের "ডোমেন" এবং "পথ" দ্বারা স্বতন্ত্রভাবে চিহ্নিত করা হয়।

কোনও কুকির "ডোমেন" এবং "পথ" না জেনে আপনি এটিকে নির্ভরযোগ্যভাবে মুছতে পারবেন না। এই তথ্যটি জাভাস্ক্রিপ্টের ডকুমেন্ট.কুকির মাধ্যমে উপলভ্য নয়। এটি HTTP কুকি শিরোলেখের মাধ্যমে পাওয়া যায় না!

সুতরাং আমার ধারণাটি হ'ল কুকিজ অপসারণের সম্পূর্ণ সেটিংস, প্রাপ্তি এবং অপসারণের সম্পূর্ণ সেট সহ একটি কুকি সংস্করণ নিয়ন্ত্রণ যুক্ত করুন:

var cookie_version_control = '---2018/5/11';

function setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name+cookie_version_control + "=" + (value || "")  + expires + "; path=/";
}

function getCookie(name) {
    var nameEQ = name+cookie_version_control + "=";
    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;
}

function removeCookie(name) {   
    document.cookie = name+cookie_version_control+'=; Max-Age=-99999999;';  
}

এটি আমার ঘন্টা বাঁচায় upvote প্রাপ্য। `` এখন দিন = নতুন তারিখ (0); ` let expireTime = now.getTime(); now.setTime(expireTime); document.cookie =document.cookie+';expires='+now.toUTCString()+';path=/'; the কুকিগুলি সরানো হবে।
ক্রুয়েলিঙ্গাইন

2

আমার আরও কিছু পরিশীলিত ও ওওপি-ভিত্তিক কুকি নিয়ন্ত্রণ মডিউল রয়েছে। এটিতে deleteAllবিদ্যমান সমস্ত কুকি সাফ করার পদ্ধতিও রয়েছে । লক্ষ্য করুন যে deleteAllপদ্ধতির এই সংস্করণটিতে সেটিংস রয়েছে path=/যা বর্তমান ডোমেনের মধ্যে সমস্ত কুকি মুছে ফেলার কারণ করে। আপনার যদি কেবল কোনও সুযোগ থেকে কুকিজ মুছতে হয় তবে আপনাকে এই পদ্ধতিতে আমার গতিশীল pathপরামিতি যুক্ত করার পদ্ধতিটি আপগ্রেড করতে হবে ।

প্রধান Cookieশ্রেণি আছে:

import {Setter} from './Setter';

export class Cookie {
    /**
     * @param {string} key
     * @return {string|undefined}
     */
    static get(key) {
        key = key.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1');

        const regExp = new RegExp('(?:^|; )' + key + '=([^;]*)');
        const matches = document.cookie.match(regExp);

        return matches
            ? decodeURIComponent(matches[1])
            : undefined;
    }

    /**
     * @param {string} name
     */
    static delete(name) {
        this.set(name, '', { expires: -1 });
    }

    static deleteAll() {
        const cookies = document.cookie.split('; ');

        for (let cookie of cookies) {
            const index = cookie.indexOf('=');

            const name = ~index
                ? cookie.substr(0, index)
                : cookie;

            document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
        }
    }

    /**
     * @param {string} name
     * @param {string|boolean} value
     * @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
     */
    static set(name, value, opts = {}) {
        Setter.set(name, value, opts);
    }
}

কুকি সেটার পদ্ধতিটি ( Cookie.set) বরং জটিল তাই আমি এটিকে অন্য শ্রেণিতে বিভক্ত করে। এটির একটি কোড রয়েছে:

export class Setter {
    /**
     * @param {string} name
     * @param {string|boolean} value
     * @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
     */
    static set(name, value, opts = {}) {
        value = Setter.prepareValue(value);
        opts = Setter.prepareOpts(opts);

        let updatedCookie = name + '=' + value;

        for (let i in opts) {
            if (!opts.hasOwnProperty(i)) continue;

            updatedCookie += '; ' + i;

            const value = opts[i];

            if (value !== true)
                updatedCookie += '=' + value;
        }

        document.cookie = updatedCookie;
    }

    /**
     * @param {string} value
     * @return {string}
     * @private
     */
    static prepareValue(value) {
        return encodeURIComponent(value);
    }

    /**
     * @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
     * @private
     */
    static prepareOpts(opts = {}) {
        opts = Object.assign({}, opts);

        let {expires} = opts;

        if (typeof expires == 'number' && expires) {
            const date = new Date();

            date.setTime(date.getTime() + expires * 1000);

            expires = opts.expires = date;
        }

        if (expires && expires.toUTCString)
            opts.expires = expires.toUTCString();

        return opts;
    }
}

1

জাভাস্ক্রিপ্টের সমস্ত কুকি মুছে ফেলার জন্য এখানে একটি সহজ কোড ।

function deleteAllCookies(){
   var cookies = document.cookie.split(";");
   for (var i = 0; i < cookies.length; i++)
     deleteCookie(cookies[i].split("=")[0]);
}

function setCookie(name, value, expirydays) {
 var d = new Date();
 d.setTime(d.getTime() + (expirydays*24*60*60*1000));
 var expires = "expires="+ d.toUTCString();
 document.cookie = name + "=" + value + "; " + expires;
}

function deleteCookie(name){
  setCookie(name,"",-1);
}

deleteAllCookies()সমস্ত কুকিজ সাফ করতে ফাংশনটি চালান ।


1

কার্যকরী পদ্ধতির + ES6

const cookieCleaner = () => {
  return document.cookie.split(";").reduce(function (acc, cookie) {
    const eqPos = cookie.indexOf("=");
    const cleanCookie = `${cookie.substr(0, eqPos)}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;`;
    return `${acc}${cleanCookie}`;
  }, "");
}

দ্রষ্টব্য: পাথগুলি পরিচালনা করে না


0
//Delete all cookies
function deleteAllCookies() {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + '=;' +
            'expires=Thu, 01-Jan-1970 00:00:01 GMT;' +
            'path=' + '/;' +
            'domain=' + window.location.host + ';' +
            'secure=;';
    }
}

0

একাধিক স্টাইলের কুকিজের ব্রাউজারগুলির একাধিক স্টাইলে তালিকাভুক্ত প্রায় পদ্ধতিটি পরীক্ষা করার পরে, আমি দেখতে পেলাম যে এখানে প্রায় কিছুই 50% ব্যবহার করে না।

দয়া করে প্রয়োজনীয় হিসাবে সঠিক করতে সহায়তা করুন, তবে আমি আমার 2 সেন্ট এখানে ফেলে দিচ্ছি। নিম্নলিখিত পদ্ধতিটি সবকিছু ভেঙে দেয় এবং মূলত উভয় সেটিংসের টুকরো ভিত্তিক কুকি মানের স্ট্রিং তৈরি করে পাশাপাশি শুরু করে পথ স্ট্রিংয়ের ধাপে ধাপে বিল্ডিং সহ/ এবং অবশ্যই অবশ্যই ।

আশা করি এটি অন্যকে সহায়তা করে এবং আমি আশা করি যে কোনও পদ্ধতি সমালোচনা এই পদ্ধতিটি নিখুঁত করার আকারে আসতে পারে। অন্যরা যেমন চেয়েছিল আমি প্রথমে একটি সাধারণ 1-লাইনার চেয়েছিলাম, তবে জেএস কুকিজ এমন জিনিসগুলির মধ্যে একটি যা এত সহজে মোকাবেলা করা হয় না।

;(function() {
    if (!window['deleteAllCookies'] && document['cookie']) {
        window.deleteAllCookies = function(showLog) {
            var arrCookies = document.cookie.split(';'),
                arrPaths = location.pathname.replace(/^\//, '').split('/'), //  remove leading '/' and split any existing paths
                arrTemplate = [ 'expires=Thu, 01-Jan-1970 00:00:01 GMT', 'path={path}', 'domain=' + window.location.host, 'secure=' ];  //  array of cookie settings in order tested and found most useful in establishing a "delete"
            for (var i in arrCookies) {
                var strCookie = arrCookies[i];
                if (typeof strCookie == 'string' && strCookie.indexOf('=') >= 0) {
                    var strName = strCookie.split('=')[0];  //  the cookie name
                    for (var j=1;j<=arrTemplate.length;j++) {
                        if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist
                        else {
                            var strValue = strName + '=; ' + arrTemplate.slice(0, j).join('; ') + ';';  //  made using the temp array of settings, putting it together piece by piece as loop rolls on
                            if (j == 1) document.cookie = strValue;
                            else {
                                for (var k=0;k<=arrPaths.length;k++) {
                                    if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist
                                    else {
                                        var strPath = arrPaths.slice(0, k).join('/') + '/'; //  builds path line 
                                        strValue = strValue.replace('{path}', strPath);
                                        document.cookie = strValue;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            showLog && window['console'] && console.info && console.info("\n\tCookies Have Been Deleted!\n\tdocument.cookie = \"" + document.cookie + "\"\n");
            return document.cookie;
        }
    }
})();

হয় কাজ করছে না, বা কমপক্ষে আমার জন্য নয় ... আমাকে এইচটিটিপি দ্বারা কুকিজ মুছতে হয়েছিল।
adelriosantiago

0

jQuery:

var cookies = $.cookie();
for(var cookie in cookies) {
$.removeCookie(cookie);
}

ভ্যানিলা জেএস

function clearListCookies()
{   
 var cookies = document.cookie.split(";");
 for (var i = 0; i < cookies.length; i++)
  {   
    var spcook =  cookies[i].split("=");
    deleteCookie(spcook[0]);
  }
  function deleteCookie(cookiename)
   {
    var d = new Date();
    d.setDate(d.getDate() - 1);
    var expires = ";expires="+d;
    var name=cookiename;
    //alert(name);
    var value="";
    document.cookie = name + "=" + value + expires + "; path=/acc/html";                    
}
window.location = ""; // TO REFRESH THE PAGE
}

3
এর জন্য jQuery কুকি প্লাগইন প্রয়োজন। jQuery লাইব্রেরিতে কুকি () ফাংশন নেই।
রুচিরা

-1

আইই এবং এজতে আমি একটি সমস্যা পেয়েছি। ওয়েবকিট ব্রাউজারগুলি (ক্রোম, সাফারি) আরও ক্ষমাশীল বলে মনে হচ্ছে। কুকি সেট করার সময়, সর্বদা কিছুতে "পথ" সেট করুন, কারণ পূর্বনির্ধারিত পৃষ্ঠাটি কুকি সেট করে। সুতরাং আপনি যদি "পথ" নির্দিষ্ট না করেই এটি অন্য পৃষ্ঠায় সমাপ্ত করার চেষ্টা করেন তবে পাথটি মেলে না এবং এটির মেয়াদ শেষ হবে না। document.cookieমান, একটি কুকি জন্য পাথ অথবা মেয়াদ প্রদর্শন করা হয় না, তাই আপনি আহরণ করতে পারবে না কুকি মান দিকে তাকিয়ে করা হয়েছে।

আপনার যদি বিভিন্ন পৃষ্ঠাগুলি থেকে কুকিজের মেয়াদ শেষ করতে হয় তবে সেটিংস পৃষ্ঠার পথটি কুকি মানের মধ্যে সংরক্ষণ করুন যাতে আপনি এটি পরে টানতে পারেন বা সর্বদা "; path=/;"কুকির মানটিতে যুক্ত করতে পারেন। তারপরে এটি কোনও পৃষ্ঠা থেকে শেষ হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.