ক্লায়েন্টের পক্ষ থেকে একাধিকবার ফর্ম জমা দেওয়া থেকে কীভাবে প্রতিরোধ করবেন?


97

কখনও কখনও প্রতিক্রিয়া ধীর হয়ে গেলে, কেউ একাধিকবার জমা বোতামটি ক্লিক করতে পারে।

কীভাবে এটিকে রোধ করা যায়?


4
আমি আশা করি আপনি আপনার প্রশ্নের শিরোনামে "ক্লায়েন্ট পক্ষ" রাখার কারণ হ'ল আপনি সচেতন যে ক্লায়েন্টের কাছে দুপ সাবমিশনগুলি চেষ্টা করার এবং এড়ানোর জন্য যে কোনও সমাধান 100% নিরাপত্তাহীন এবং আপনার সর্বদা সার্ভারের পক্ষে বৈধতা থাকা উচিত ।
পাওলো বার্গান্টিনো

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

4
এটি কেবল সার্ভার-সাইডে করা 100% নিরাপদও নয়, যেহেতু আপনার প্রথম অনুরোধটি শেষ হতে অনেক বেশি সময় নিতে পারে তাই দ্বিতীয়টি জানতে পারে এটি এগিয়ে যাওয়া উচিত নয়।
igorsantos07

সিএসআরএফ আক্রমণগুলি প্রতিরোধ করার জন্য কি ডাবল-জমা কুকি প্যাটার্নটিও বহুত্বক ফর্ম জমা আটকাতে পারে না?
মার্টিন থোমা

উত্তর:


100

ইতিমধ্যে জমা দেওয়ার পরে ফর্মটিতে জমা দেওয়া ইভেন্টটি অক্ষম করতে আপত্তিজনক জাভাস্ক্রিপ্ট ব্যবহার করুন। এখানে jQuery ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে।

সম্পাদনা: জমা বোতামটি ক্লিক না করে একটি ফর্ম জমা দেওয়ার স্থির সমস্যা। ধন্যবাদ, ইচিবান

$("body").on("submit", "form", function() {
    $(this).submit(function() {
        return false;
    });
    return true;
});

4
যদি কোনও পাঠ্যবক্সে এন্টার টিপে ফর্মটি জমা দেওয়া হয় তবে কী হবে?
ichiban

4
আপনি এমনকি প্রয়োজন return true? আমি মনে করি প্রাথমিক জমাটি ছাড়া এটি কাজ করা উচিত।
সাইমন পূর্ব

আমি বিশ্বাস করি return trueযদি বাদ দেওয়া হয় তবে তা অন্তর্ভুক্ত।
ডেরেক

15
আমি এই সমাধানটি আপত্তিজনক বৈধতা এবং এমভিসি দিয়ে চেষ্টা করেছি। জেএস প্রথমে কল হয় যা সর্বদা মিথ্যা প্রত্যাবর্তন করে এবং তারপরে বৈধতা বলা হয়। সুতরাং আমার ফর্মটিতে কিছু বৈধতা ত্রুটি থাকলে ফর্মটি কখনও জমা দেওয়া হয় না !!
bjan

6
সত্যিই দুর্দান্ত কাজ করে। আমি সাবমিট বাটনটি অক্ষম করতে এবং ব্যবহারকারীর ইঙ্গিতটি দেখানোর জন্য জমা বোতামের পাঠ্যটি প্রতিস্থাপন করতে চাই। $(this).find("input[type='submit']").attr('disabled', 'disabled').val('submiting'); return true; });
ক্যাম গান

43

আমি এসপি এমভিসি 3 অবিচ্ছিন্ন বৈধতা সহ ভ্যান্টির সমাধানটি চেষ্টা করেছি এবং যদি ক্লায়েন্টের বৈধতা ব্যর্থ হয় তবে কোডটি এখনও চালানো হয়, এবং ফর্ম জমা ভালের জন্য অক্ষম করা হয়। আমি ক্ষেত্রগুলি সংশোধন করে পুনরায় জমা দিতে সক্ষম নই। (ভজনের মন্তব্য দেখুন)

সুতরাং আমি ভ্যানস্টির স্ক্রিপ্টটি এভাবে পরিবর্তন করেছি:

$("form").submit(function () {
    if ($(this).valid()) {
        $(this).submit(function () {
            return false;
        });
        return true;
    }
    else {
        return false;
    }
});

অন্যান্য যে কোনও পার্শ্ব প্রতিক্রিয়া লক্ষণীয়, বা আপনি সর্বত্র প্রয়োগ করার জন্য এটি কাজ করেছে?
সায়রান গালাগের

24

ক্লায়েন্ট সাইড ফর্ম জমা দেওয়ার নিয়ন্ত্রণটি অনসামিত হ্যান্ডলারটি সাবমিট বাটনটি আড়াল করে এটিকে লোডিং অ্যানিমেশন দিয়ে প্রতিস্থাপনের মাধ্যমে বেশ মার্জিতভাবে অর্জন করা যেতে পারে। এইভাবে যেখানে ব্যবহারকারী তার ক্রিয়া (ক্লিক) ঘটেছে একই স্থানে তাত্ক্ষণিক ভিজ্যুয়াল প্রতিক্রিয়া পান। একই সময়ে আপনি ফর্মটি অন্য সময় জমা দেওয়া থেকে আটকাবেন।

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

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

লিম্বলিবের পরামর্শ অনুসারে, কোনও পরিচয়কারীর সাহায্যে ফর্মটি তৈরি করুন যা সেই ফর্মের জন্য অনন্য এবং এটিকে কোনও লুকানো ইনপুট ক্ষেত্রে রেখে দিন। যে সনাক্তকারী সংরক্ষণ করুন। ফর্ম ডেটা গ্রহণ করার সময় কেবল এটি সনাক্তকারী মিলে গেলে এটি প্রক্রিয়া করে। (ব্যবহারকারীদের সেশনে শনাক্তকারীর সাথে সংযোগ স্থাপন করুন এবং অতিরিক্ত সুরক্ষার জন্য এটিও মেলে)) ডেটা প্রসেসিংয়ের পরে শনাক্তকারীটিকে মুছুন।

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


15
<form onsubmit="if(submitted) return false; submitted = true; return true">

6
ব্যবহারের <form onsubmit="return (typeof submitted == 'undefined') ? (submitted = true) : !submitted">বা লেখার var submitted = false;আপনার স্ক্রিপ্টটি ডান পর্যায়ে নিম্নলিখিত ত্রুটির এড়াতে: Uncaught ReferenceError: submitted is not defined
তামেস বলভুরি

15

এটি করার সহজ উপায়:

<form onsubmit="return checkBeforeSubmit()">
  some input:<input type="text">
  <input type="submit" value="submit" />
</form>

<script type="text/javascript">
  var wasSubmitted = false;    
    function checkBeforeSubmit(){
      if(!wasSubmitted) {
        wasSubmitted = true;
        return wasSubmitted;
      }
      return false;
    }    
</script>

jQuery অবিচ্ছিন্ন বৈধতা সহ, অবরুদ্ধ স্ক্রিপ্ট প্রথম এবং বৈধতা বলা হয় যা বৈধতা ত্রুটি থাকলে কোনও জমা দেওয়ার ফলাফল দেয় না
বাজান

8

ক্লিকের পরই সাবমিট বাটনটি অক্ষম করুন। আপনি বৈধতা সঠিকভাবে পরিচালনা করেছেন তা নিশ্চিত করুন। সমস্ত প্রক্রিয়াজাতকরণ বা ডিবি ক্রিয়াকলাপের জন্য একটি মধ্যবর্তী পৃষ্ঠা রাখুন এবং তারপরে পরবর্তী পৃষ্ঠায় পুনঃনির্দেশ করুন। এটি নিশ্চিত করে যে দ্বিতীয় পৃষ্ঠাকে রিফ্রেশ করা অন্য কোনও প্রক্রিয়াজাতকরণ করে না।


হ্যাঁ, দুর্দান্ত টিপ শোবান, আমি রাজি হই। হওয়া উচিতform page ---submits to---> form_submission_script.php ---after saving, redirects to---> form_thankyou.html
সাইমন পূর্ব

6

বর্তমান সময়ে হ্যাশ করুন, ফর্মটিতে এটি একটি গোপন ইনপুট তৈরি করুন। সার্ভারের পাশে, প্রতিটি ফর্ম জমা দেওয়ার হ্যাশ পরীক্ষা করুন; আপনি যদি ইতিমধ্যে সেই হ্যাশ পেয়ে থাকেন তবে আপনার পুনরাবৃত্তি জমা হবে।

সম্পাদনা: জাভাস্ক্রিপ্টের উপর নির্ভর করা ভাল ধারণা নয়, সুতরাং আপনারা সকলেই এই ধারণাগুলি সমর্থন করে যেতে পারেন তবে কিছু ব্যবহারকারী এটি সক্ষম করতে পারবেন না। সঠিক উত্তরটি হ'ল সার্ভারের দিকে ব্যবহারকারী ইনপুটকে বিশ্বাস না করা।


এই চেহারা "খুব বেশি" না? ;-)
শোভন

4
মনে হচ্ছে এটি কেবলমাত্র প্রতি ব্যবহারকারীকে একাধিকবার ফর্ম জমা দেওয়ার থেকে একজন ব্যবহারকারীকে আটকাবে। যদি আমি ফর্মটি ২০০৯-০-2-২৯ ১২:৩:3: at০ এ জমা করি তবে সার্ভার আমাকে সেই একই হ্যাশ দিয়ে অন্য ফর্মটি জমা দিতে দেয় না, তবে আমি যদি ক্লিক করে জমা দিন 2009-05-29 12:13:38, এটা দিয়ে যেতে হবে। এছাড়াও, আপনার কৌশলটি 2 জন ভিন্ন ব্যবহারকারীকে একই সাথে দুটি পৃথক ফর্ম জমা দেওয়া থেকে বিরত রাখতে পারে: তার মধ্যে একটিকে লাথি মেরে ফেলে দেওয়া হবে, যদিও এটি সম্ভবত তাঁর কাছ থেকে প্রথম জমা দেওয়া হবে।
সারা ভেসেলস

4
@ মনিপেনি আপনার প্রথম আপত্তিটি মিথ্যা, হ্যাশটি যখন ফর্মটি ব্যবহারকারীকে প্রেরণ করা হয়েছিল, তখন তারা জমা দেওয়ার সময় নয়। আপনি যদি দ্বিতীয় সম্পর্কে সত্যই চিন্তিত হন তবে আপনার কাছে প্রচুর বিকল্প রয়েছে। আপনার হ্যাশ স্ট্রিংয়ে তাদের সেশন আইডি যুক্ত করুন, এবং / বা ঠিক একইরূপতার জন্য ফর্মের সমস্ত ক্ষেত্রগুলি পরীক্ষা করুন; দুই ব্যবহারকারী সম্ভবত একই ফর্মটি জমা দেয়নি।
llimllib

@ শোবান আমি দুঃখিত, আপনি যা বলছেন তা আমি অনুসরণ করি না
llimllib

4
"অতিরিক্ত" শ্রোতার চোখে পড়ে। আপনার যদি সত্যই সদৃশ ফর্ম জমাগুলি প্রতিরোধ করতে হয় তবে সমাধানের কমপক্ষে একটি অংশটি সার্ভার-সাইড হতে হবে। "আপনি ব্যবহারকারীদের বিশ্বাস করতে পারবেন না।"
বেন ফাঁকা

5

আপনি কোনও অগ্রগতি বার বা কোনও স্পিনারও প্রদর্শন করতে পারেন যে ফর্মটি প্রক্রিয়াজাত করছে indicate


5

JQuery ব্যবহার করে আপনি করতে পারেন:

$('input:submit').click( function() { this.disabled = true } );

&

   $('input:submit').keypress( function(e) {
     if (e.which == 13) {
        this.disabled = true 
     } 
    }
   );

4
বোতামটি অক্ষম হওয়ার পরে কোনও পাঠ্যবক্সে ENTER চেপে ফর্মটি জমা দেওয়া হলে কী হবে?
ichiban

এর মতো বোতামটি অক্ষম করা হলে ব্যবহারকারীরা ENTER টিপতে বাধা দেবে। তবে, ঠিক এখন এটি জমা দেওয়ার ইনপুটটিতে একটি কিপ্রেস বাঁধতে হবে
বোরিস গুরি

এটি জমা দিতে বোতামটিকে বাধা দেয়। অতএব, সার্ভার সাইডের বৈধতা অক্ষম করা হচ্ছে।
মার্কো আলেক্সিć

@ মারকো, ঠিক আছে, তবে ওপি এটির জন্য বলেছে, যাইহোক একটি টোকেন ব্যবহার ফর্মটি দু'বার জমা দিতে বাধা দিতে পারে।
বরিস গুউরি

4
আমি যখন এই ধরণের কৌশলটি চেষ্টা করেছি তখন আমি দেখতে পেলাম যে ফর্মটি মোটেও জমা দেবে না (কমপক্ষে ক্রোম 14 এ নয়) সম্ভবত ব্রাউজারটি ফর্ম জমা দেওয়ার আগে আপনি বোতামটি অক্ষম করে রেখেছেন।
সাইমন পূর্ব

4

আমি জানি আপনি আপনার প্রশ্নটি 'জাভাস্ক্রিপ্ট' দিয়ে ট্যাগ করেছেন তবে এখানে এমন একটি সমাধান রয়েছে যা জাভাস্ক্রিপ্টের উপর নির্ভর করে না:

এটি PRG নামে একটি ওয়েবঅ্যাপ প্যাটার্ন এবং এটির বর্ণনা করার জন্য এখানে একটি নিবন্ধ রয়েছে


4

আপনি একাধিক জমা কেবল এটিকে আটকাতে পারবেন:

var Workin = false;

$('form').submit(function()
{
   if(Workin) return false;
   Workin =true;

   // codes here.
   // Once you finish turn the Workin variable into false 
   // to enable the submit event again
   Workin = false;

});

আপনার উত্তরের সমস্যাটি হ'ল ব্যবহারকারীর ক্লিকের সময় এবং সময়ের মধ্যে দ্বিতীয় বিভাজন রয়েছে Workin =true;। ডাবল জমা দেওয়া এখনও সম্ভব, তবে কমই সম্ভবত।

4

এই প্রশ্নের সর্বাধিক সহজ উত্তর হিসাবে জিজ্ঞাসা করা হয়েছে: "কখনও কখনও প্রতিক্রিয়া ধীর হয়ে গেলে কেউ একাধিকবার সাবমিট বোতামটি ক্লিক করতে পারে this কীভাবে এটি হওয়া থেকে রোধ করা যায়?"

কেবল নীচের কোডের মতো ফর্ম জমা বোতামটি অক্ষম করুন।

<form ... onsubmit="buttonName.disabled=true; return true;">
  <input type="submit" name="buttonName" value="Submit">
</form>

এটি জমা দেওয়ার বোতামটি অক্ষম করবে, জমা দেওয়ার জন্য প্রথম ক্লিক করুন on এছাড়াও যদি আপনার কিছু বৈধতা নিয়ম থাকে তবে তা ঠিক কাজ করবে। আশা করি এটি সাহায্য করবে।


আমি মনে করি আপনি কিছু মিস করছেন দয়া করে আপনার কোড পোস্ট করুন।
ইমরান খান

3

ক্লায়েন্ট পক্ষের , একবার ফর্মটি জাভাস্ক্রিপ্ট কোডের সাথে @ ভ্যান্টি এবং @ চাওস দ্বারা সরবরাহিত পদ্ধতির মতো জমা দেওয়ার পরে অক্ষম করা উচিত।

তবে নেটওয়ার্ক ল্যাগ বা জাভাস্ক্রিপ্ট-অক্ষম অবস্থার জন্য একটি সমস্যা রয়েছে যেখানে এটি হওয়া থেকে রোধ করার জন্য আপনার জেএসের উপর নির্ভর করা উচিত নয়।

সুতরাং, সার্ভার-সাইডে , আপনাকে একই ক্লায়েন্টদের কাছ থেকে পুনরাবৃত্তি জমা দেওয়া উচিত এবং সেই পুনরাবৃত্তিটি বাদ দেওয়া উচিত যা ব্যবহারকারীর কাছ থেকে একটি মিথ্যা প্রচেষ্টা বলে মনে হচ্ছে।


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

আমি ক্লিক হ্যান্ডলারটি থ্রোটল করার বিষয়েও বিবেচনা করছিলাম।
ডেভিডথেপার্ক

একই ক্লায়েন্টের কাছ থেকে জমা দিলে আপনি কীভাবে সার্ভার সাইডটি পরীক্ষা করবেন? ব্যবহারকারীর আইপি ঠিকানা? যদি তা হয় তবে আপনি পূর্বে জমা দেওয়া এন্ট্রি থেকে আইপি ঠিকানা সার্ভার-সাইডটি কোথায় "সংরক্ষণ" করবেন? (এই প্রসঙ্গে প্রয়োজনে আমি নোড ব্যবহার করছি)
ব্যবহারকারীর 1063287

3

আপনি নিরাপদ jquery প্লাগইন চেষ্টা করতে পারেন ।

$('#example').safeform({
    timeout: 5000, // disable form on 5 sec. after submit
    submit: function(event) {
        // put here validation and ajax stuff...

        // no need to wait for timeout, re-enable the form ASAP
        $(this).safeform('complete');
        return false;
    }
})

1

আমার জন্য সহজতম এবং মার্জিত সমাধান:

function checkForm(form) // Submit button clicked
{
    form.myButton.disabled = true;
    form.myButton.value = "Please wait...";
    return true;
}

<form method="POST" action="..." onsubmit="return checkForm(this);">
    ...
    <input type="submit" name="myButton" value="Submit">
</form>

আরও জন্য লিঙ্ক ...


1

আপনার ফর্মটিতে এই কোডটি ব্যবহার করুন itএটি একাধিক ক্লিকগুলি পরিচালনা করবে।

<script type="text/javascript">
    $(document).ready(function() {
        $("form").submit(function() {
            $(this).submit(function() {
                return false;
            });
            return true;
        });     
    }); 
</script>

এটা নিশ্চিতভাবে কাজ করবে।


1

এটি প্রতি 2 সেকেন্ডে জমা দেওয়ার অনুমতি দেয়। সামনের বৈধতার ক্ষেত্রে।

$(document).ready(function() {
    $('form[debounce]').submit(function(e) {
        const submiting = !!$(this).data('submiting');

        if(!submiting) {
            $(this).data('submiting', true);

            setTimeout(() => {
                $(this).data('submiting', false);
            }, 2000);

            return true;
        }

        e.preventDefault();
        return false;
    });
})

0

একাধিক জমা দেওয়া থেকে রক্ষা করার সর্বোত্তম উপায় হ'ল পদ্ধতিতে কেবলমাত্র বোতামের আইডি পাস।

    function DisableButton() {
        document.getElementById("btnPostJob").disabled = true;
    }
    window.onbeforeunload = DisableButton; 

0

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

$('#disable').on('click', function(){
    $('#disable').attr("disabled", true);
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="disable">Disable Me!</button>


0

সর্বাধিক সহজ সমাধান হ'ল ক্লিকের বোতামটি অক্ষম করুন, অপারেশন সম্পূর্ণ হওয়ার পরে এটি সক্ষম করুন। Jsfiddle এ অনুরূপ সমাধান চেক করতে:

[click here][1]

এবং আপনি এই উত্তরের জন্য আরও কিছু সমাধান খুঁজে পেতে পারেন ।


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

0

এটি আমার জন্য খুব সূক্ষ্ম কাজ করে। এটি ফার্ম জমা দেয় এবং বোতামটি অক্ষম করে তোলে এবং 2 সেকেন্ড পরে বোতামটি সক্রিয় করে।

<button id="submit" type="submit" onclick="submitLimit()">Yes</button>

function submitLimit() {
var btn = document.getElementById('submit')
setTimeout(function() {
    btn.setAttribute('disabled', 'disabled');
}, 1);

setTimeout(function() {
    btn.removeAttribute('disabled');
}, 2000);}

ইসিএমএ 6 সিন্টেক্সে

function submitLimit() {
submitBtn = document.getElementById('submit');

setTimeout(() => { submitBtn.setAttribute('disabled', 'disabled') }, 1);

setTimeout(() => { submitBtn.removeAttribute('disabled') }, 4000);}

0

ব্রাউজার ইনপুট বৈধতা বাইপাস না করে কেবল সম্ভাব্য উত্তরের সাথে যুক্ত করতে

$( document ).ready(function() {
    $('.btn-submit').on('click', function() {
        if(this.form.checkValidity()) {
            $(this).attr("disabled", "disabled");
            $(this).val("Submitting...");
            this.form.submit();
        }
    });
});

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