OTP Verification
OTP verification क्या है
OTP (One-Time Password) verification पक्का करता है कि user सच में किसी email या phone को control करता है। आप एक छोटा random code generate करते हैं, उसे भेजते हैं, और वापस type करने को कहते हैं। अगर मेल खाए (और expire न हुआ हो), तो वो verified है। signup, login और payments के लिए यह आम अतिरिक्त security step है।
OTP generate करना
<?php
$otp = random_int(100000, 999999); // secure 6-अंक code
echo $otp; // जैसे 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";
}
?>
पहले 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 क्या है?
PHP में OTP कैसे generate करूँ?
random_int(100000, 999999) जैसा secure random function इस्तेमाल कीजिए। security वाली किसी चीज़ के लिए rand() से बचिए, क्योंकि वो ज़्यादा predictable है।