Bengali (বাংলা) translation by Nazmul Shuvo (you can also view the original English article)

সূচনা
গত পর্বে, আমি Twilio ব্যবহার করে SMS এর জন্য অ্যাপ্লিকেশান প্রস্তুত করা সম্পর্কে লিখেছিলাম, Twilio সাধারনভাবে টেক্সটিং সার্ভিস এর জন্য ব্যবহার করা হয়। আজকের টিউটোরিয়ালে, আমি দেখাবো যে অনেকগুলো এসএমএস পাঠানোর আগে কি করে ফোন নাম্বার ভেরিফাই করতে হয় এবং খরচ কমাতে হয়।
শুরু করার পূর্বে, আমি আপনাদেরকে প্রশ্ন এবং প্রতিক্রিয়া কমেন্টে পোস্ট করতে উৎসাহিত করছি। যদি আপনি Envato Tuts+ এ আমার ভবিষ্যতের টিউটোরিয়াল এবং অন্যান্য সিরিজগুলো দেখতে চান, অনুগ্রহ করে আমার ইন্সট্রাকটর পেইজ ভিজিট করুন অথবা @lookahead_io অনুসরণ করুন।
প্রক্রিয়াকরণের খসড়া
ব্যবহারকারী তাদের ফোন নাম্বার দেওয়ার পরে, আমরা কিছু সহজবোধ্য অকপট ধাপ সম্পাদন করবঃ
- একটি চার-সংখ্যার ইউনিক কোড জেনারেট হবে
- মোবাইল নাম্বার এবং চার-সংখ্যার কোড আমাদের ডাটাবেজে সংরক্ষিত হবে (অথবা লোকালি কোড এনক্রিপ্ট করবে একটি পেইজের মধ্যে ভেরিয়েবল লুকায়িত রাখতে)
- আনভেরিফাইড নাম্বারে চার সংখ্যার একটি কোড টেক্সট করবে।
- ব্যবহারকারীকে একটি ফর্ম দেখাবে যেখানে রিসিভ হওয়া কোড দিতে হবে।
- কোড ম্যাচ ভেরিফাই করবে।
- নাম্বারটি ডাটাবেজে ভেরিফাইড হিসেবে মনোনীত করবে।
ব্যবহারকারীর কন্ট্যাক্ট পেইজ
মিটিং প্ল্যানার এ, প্রতিটি ব্যবহারকারী একাধিক যোগাযোগ পদ্ধতি যোগ করতে পারবে, যেমন- স্কাইপ, ফোন, ইত্যাদি। SMS নোটিফিকেশন এর জন্য প্রতিটি মোবাইল নাম্বার অবশ্যই ভেরিফাইড হতে হবে।
নিচের তৃতীয় সারিতে একটি চেকবক্স দেখাবে যা ব্যবহারকারী ভেরিফিকেশন অনুরোধের জন্য ক্লিক করতে পারবেঃ

ক্লিক করার পরে এটি ব্যবহারকারীকে ট্রান্সফার করবে নিচের actionVerify()
কন্ট্রোলারের কাছে; মনে রাখবেন যে প্রথমে এটি তাদের else
ব্লকে নিয়ে যাবে কারন ব্যবহারকারী তখনও কোড সাবমিট করেনিঃ
public function actionVerify($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { ... } else { $canRequest = $model->canRequest(); if ($canRequest) { // send a text to this number $model->requestCode(); return $this->render('verify', [ 'model' => $model, ]); } else { Yii::$app->getSession()->setFlash('error', $canRequest); return $this->redirect(['/user-contact']); } } }
canRequest() মেথডটি চেক করবে তারা কি কোডের জন্য পুনঃপুনঃ অনুরোধ করছে নাকি খুব ঘনঘনঃ
public function canRequest() { if ($this->request_count<UserContact::MAX_REQUEST_COUNT) { if (time() - $this->requested_at>=60) { return true; } else { return Yii::t('frontend','Sorry, you must wait a minute between requests.'); } } else { return Yii::t('frontend','You have exceeded the maximum number of attempts.'); } }
অপব্যবহার রোধে প্রচেষ্ঠার মাঝে আমি তাদের এক মিনিট অপেক্ষা করাবো।
যাচাইকরন কোড প্রেরন হচ্ছে
সমর্থন দিলে, কল করবে requestCode()
:
public function requestCode() { $this->verify_code = rand(0,9999); $this->requested_at = time(); $this->request_count+=1; $this->update(); $sms = new Sms; $sms->transmit($this->info,Yii::t('frontend', 'Please return to the site and type in {code}',['code'=>sprintf("%04d",$this->verify_code)])); }
এটি যা করবেঃ
- চার-সংখ্যার এলোমেলো কোড জেনারেট করবে।
- শেষ মুহুর্তের (unix সেকেন্ডে) যাচাইকরনের অনুরোধের সময় রেকর্ড করবে।
- এটি এই নাম্বার যাচাই এর জন্য কতবার চেষ্ঠা করা হয়েছে তার সংখ্যা বৃদ্ধি করবে।
- এবং এটি এই সবগুলো ডাটাবেজে সংরক্ষন করবে।
- তারপর, এটি একটি কোডসহ টেক্সট পাঠাবে যা দেখতে নিচের ছবিটির মতো।

কোডের অনুরোধের পরে, দৃশ্যের অন্তরালে এটি ডাটাবেজে সংরক্ষিত হবে এবং ব্যবহারকারীকে কোডটি পাঠাবে, এরপর এটি কোড চেয়ে নিচের ফর্মটি দেখাবেঃ

কোড যাচাই করা
যখন ব্যবহারকারী কোড সাবমিট করার চেষ্ঠা করবে, এটি উপরের অংশের actionVerify() চালু করবেঃ
public function actionVerify($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { // display verification form $model->verify = Yii::$app->request->post()['UserContact']['verify']; if (strval($model->verify_code) == strval($model->verify)) { $model->status = UserContact::STATUS_VERIFIED; $model->update(); Yii::$app->getSession()->setFlash('success',Yii::t('frontend','Thank you, your number is confirmed.')); return $this->redirect(['/user-contact']); } else { Yii::$app->getSession()->setFlash('error', Yii::t('frontend','Sorry, that is incorrect. Please request a new code.')); return $this->redirect(['/user-contact']); } } else { ... } }
এটি দেখবে কোড মিলেছে কি না। যদি মিলে থাকে, এটি ডাটাবেজকে আপডেট করবে প্রকাশ করতে যে নাম্বারটি ভেরিফাইড। এবং ব্যবহারকারীকে তা জানাবেঃ

যদি না মিলে, এটি একটি এরর বার্তা প্রদর্শন করবেঃ

নিজে চেষ্ঠা করুন
যদি আপনি এটি বাস্তবে দেখতে চান, আপনি সাইন আপ করতে পারেন সিম্পল প্ল্যানার অথবা মিটিং প্ল্যানার (যা ফেইসবুক এবং গুগোল এর মতো সোসাল একাউন্টের মাধ্যমে সহজ) এ এবং একটি ফোন নাম্বার যোগ করতে পারেন। তারপর ক্লিক করুন চেকমার্কে যা আপনি লিস্ট এ দেখতে পাবেন, ব্যাস।
শেষ
স্পষ্টত, আপনার অ্যাপ্লিকেশান যদি অনেক বেশি মেসেজ প্রেরন করে, তবে এটি ব্যবসায় একটি লক্ষণীয় খরচ, এবং আপনি এ অপব্যবহার নিয়ন্ত্রণ করতে চাইবেন। এটি শুরু করা যায় একটি ফায়ারওয়াল সেটিংসের মধ্য দিয়ে যা প্রতিরোধ করবে ইনভ্যালিড নাম্বারগুলোকে - অথবা কোন প্রতারকের ভ্যালিড নাম্বারকেও।
আশা করি এটি আপনার সহায়ক হবে। যদি আপনার কোন প্রশ্ন অথবা পরামর্শ থাকে, অনুগ্রহ করে কমেন্টে পোস্ট করুন। যদি আপনি Envato Tuts+ এ আমার ভবিষ্যতের টিউটোরিয়াল এবং অন্যান্য সিরিজগুলো দেখতে চান, অনুগ্রহ করে আমার ইন্সট্রাকটর পেইজ ভিজিট করুন অথবা অনুসরণ করুন @lookahead_io। চেক করুন আমার স্টার্টআপ সিরিজ এবং মিটিং প্ল্যানার।
সম্পর্কিত লিংকগুলি
Envato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post