🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ مهران
میشه از همین روش برای ارسال پسورد یکبار مصرف به جای توکن استفاده کرد؟
جامعه پی اچ پی ایجاد شده در ۲۹ مرداد ۱۴۰۲

یعنی به جای اینکه توکن ارسال کنیم پسورد توی تابع جنریت بشه و از طریق sms ارسال بشه ؟

سلام مهران جان، بله کاری که گفتید رو میشه انجام داد.

صادق برزگر ۲۹ مرداد ۱۴۰۲، ۱۰:۵۲

من میدونم که برای پروداگشن از این کدها و روشها استفاده نمیشه و باید از library ‌های authenticate استفاده کرد منتها میخوام روش کار دستم باید امکانش هست یه تمونه کد برای ارسال پسورد و لاگین پسورد یکبار مصرف برام مثال بزنید ؟

مهران ۲۹ مرداد ۱۴۰۲، ۱۱:۵۴

1. ابتدا پسورد یکبار مصرف را تولید میکنیم:

function generateOTP($length = 6) {
  $result = "";
  for ($i = 0; $i < $length; $i++) {
    $result .= rand(0, 9);
  }
  return $result;
}

2. حالا میتوانید این پسورد را در بانک اطلاعاتی ذخیره کنید و برای کاربر ارسال کنید. بعنوان مثال:

$otp = generateOTP();
// store OTP in database
storeOTPForUser($userID, $otp);
// Send OTP to user via SMS
sendSmsToUser($userPhone, "Your one-time password is: " . $otp);

3. وقتی کاربر OTP خود را وارد میکند، شما میتوانید آن را با مقدار ذخیره‌ شده در بانک اطلاعاتی مقایسه کنید.

$enteredOtp = $_POST['otp']; // the user entered this value through the form
$storedOtp = getStoredOTPForUser($userID);
if ($enteredOtp == $storedOtp) {
  // OTP is valid
} else {
  // OTP is invalid
}

این فقط یک مثال ساده بود چون در برنامه‌‌های واقعی باید موارد امنیتی بیشتری مد نظر قرار دهید، مانند محدود کردن تعداد تلاش‌‌های ورود و ...

محسن موحد ۲۹ مرداد ۱۴۰۲، ۲۱:۰۳