Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 46

OTP Verification

OTP verification क्या है

OTP (One-Time Password) verification पक्का करता है कि user सच में किसी email या phone को control करता है। आप एक छोटा random code generate करते हैं, उसे भेजते हैं, और वापस type करने को कहते हैं। अगर मेल खाए (और expire न हुआ हो), तो वो verified है। signup, login और payments के लिए यह आम अतिरिक्त security step है।

💡 नियम: securely generate कीजिए, expiry के साथ server-side store कीजिए, और डाले गए code की store वाले से तुलना कीजिए।

OTP generate करना

<?php
  $otp = random_int(100000, 999999);  // secure 6-अंक code
  echo $otp;   // जैसे 483920
?>
483920

Secure, मुश्किल-से-अंदाज़ा code को random_int (rand नहीं) इस्तेमाल कीजिए। 6-अंक range 900,000 संभावनाएँ देती है।

Expiry के साथ store करना

<?php
  session_start();
  $_SESSION["otp"]        = $otp;
  $_SESSION["otp_expiry"] = time() + 300;  // 5 मिनट मान्य
?>

OTP और expiry time session में (server-side) store कीजिए। इसे कभी hidden field या cookie में मत डालिए, जहाँ user पढ़ या बदल सके।

OTP भेजना

Code email या SMS से पहुँचाइए। email के लिए, SMTP पर PHPMailer इस्तेमाल कीजिए:

<?php
  // email से भेजना (सरल)
  $subject = "Your OTP";
  $body    = "Your code is: $otp (valid 5 minutes)";
  // $mail->send(); PHPMailer से, या SMS gateway API
?>

User code पाकर अगली screen पर डालता है। PHP के पास तुलना के लिए सही value पहले से store है।

User की entry verify करना

<?php
  session_start();
  $entered = $_POST["otp"] ?? "";

  if (time() > ($_SESSION["otp_expiry"] ?? 0)) {
      echo "OTP expired";
  } elseif ($entered == ($_SESSION["otp"] ?? null)) {
      echo "Verified successfully";
      unset($_SESSION["otp"]);   // one-time use
  } else {
      echo "Wrong OTP";
  }
?>
Verified successfully

पहले expiry जाँचिए, फिर डाले गए code की store वाले से तुलना कीजिए। सफल होने पर OTP session से हटा दीजिए ताकि दोबारा इस्तेमाल न हो — यही "one-time" हिस्सा है।

आम गलतियाँ

  • rand() इस्तेमाल करना। Secure, unpredictable code को random_int इस्तेमाल कीजिए।
  • OTP client-side store करना। इसे session/database में रखिए, कभी cookie या hidden field में नहीं।
  • कोई expiry नहीं। हमेशा expiry time set और जाँचिए।
  • इस्तेमाल के बाद clear न करना। verify होते ही OTP हटा दीजिए ताकि वो सच में one-time हो।

सारांश

  • OTP verification पक्का करता है user किसी email या phone को control करता है।
  • random_int से securely generate कीजिए।
  • OTP और expiry server-side (session या database) store कीजिए।
  • Email या SMS से भेजिए, फिर डाले गए code की तुलना कीजिए।
  • Expiry जाँचिए और सफल match के बाद OTP clear कीजिए।

आगे, इसे पहुँचाइए PHP में email से, या flow सुरक्षित कीजिए sessions से।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

OTP क्या है?
OTP (One-Time Password) एक छोटा code है, आमतौर पर 4-6 अंक, जो user को उसकी पहचान पक्की करने को भेजा जाता है — जैसे signup या login के दौरान। यह सिर्फ़ एक बार और थोड़े समय के लिए मान्य होता है, जो इसे मज़बूत अतिरिक्त जाँच बनाता है।
PHP में OTP कैसे generate करूँ?
6 अंक के code के लिए random_int(100000, 999999) जैसा secure random function इस्तेमाल कीजिए। security वाली किसी चीज़ के लिए rand() से बचिए, क्योंकि वो ज़्यादा predictable है।
OTP कहाँ store करूँ?
इसे server-side store कीजिए — session या database में — expiry time के साथ, कभी hidden form field या cookie में नहीं जहाँ user पढ़ या बदल सके। डाले गए code की store वाले से तुलना कीजिए।
OTP को expiry क्यों चाहिए?
OTP सिर्फ़ कुछ मिनट चलना चाहिए। Expiry time store करना और पुराने codes ठुकराना attacker की window सीमित करता है और बाद में leak हुए code को दोबारा इस्तेमाल होने से रोकता है।
User को OTP असल में कैसे भेजूँ?
Email से (PHPMailer/SMTP इस्तेमाल करके) या SMS gateway API से SMS द्वारा। PHP OTP generate और store करता है, फिर उसे user तक पहुँचाने को email या SMS service को call करता है।
← Back to PHP Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicForgot Password Reset आपकी प्रगति: 46 / 50 (92%) · Lesson 47 / 50 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें