🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Ebrahim Shahi
استفاده از Session برای نگهداری کد تایید
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۰ شهریور ۱۴۰۲

درود

برای نگهداری کد تایید ارسال شده برای کاربر و انجام وریفیکیشن و... آیا میشه از Session استفاده کرد و آیا روش بهینه‌تری هست؟ یا کلا استاندارد نیست و اشتباهه؟ چون به ذهن من اینطور رسید که:

۱- نیاز به ایجاد جدول در دیتابیس و کوئری زدن و... نداره کلا دیتابیس رو درگیر نمیکنیم

۲- در این روش که کدهای ارسالی در دیتابیس ذخیره میشه و شماره متناظر برای هر کد ارسال شده هم ذخیره نشده. بعد از یک مدت طوری میشه که کاربر کد وریفیکیشن تصادفی هم بزنه ممکنه قبول بشه چون ما ۱۰۰‌ها کد ذخیره شده در دیتابیس داریم که بلاخره با یکی جور در میاد.

۳- Session هر دفعه از بین میره و ما انباشت داده نداریم و مشکل مورد قبلی رو نداریم.

با سلام و احترام

میتونید از Session‌ها استفاده کنید ولی باید مراقب موارد امنیتی باشید.

من نمیخوام شمارو محدود به یک راه حل بکنم ولی به تجربه در پروژه‌های مختلف به این رسیدم که بهتره از دیتابیس استفاده کنید.

در حالت دیتابیسی شما قابلیت‌های بیشتری رو در اختیار دارید به فرض کاربر میتونه تو یک دستگاه به فرض دسکتاپ درخواست کد تایید بده و این کد به ایمیلش ارسال بشه و کاربر از طریق گوشی هم لاگین کنه و عملیات وریفای به درستی انجام میشه ولی در حالت session به این مورد دسترسی ندارید.

در ضمن امکان معتبر سازی کد تایید در بازه‌های زمانی مشخص، محدود کردن درخواست برای یک کاربر و ... دسترسی خواهید داشت.

در ارتباط با مورد 2 ام هم این گزینه درست نیست چون شما باید ذخیره دیتا رو برحسب یک خصوصیت یونیکی انجام بدید به فرض جدول دیتابیس شما میتونیه تشکیل شده باشه از:

id, user_id, otp_code, ip, created_at, updated_at

که درخواست برای یوزر محدود میشه یا میتونید برحسب گزینه مد نظرتون به فرض شماره تلفن محدود کنید

id, phone, otp_code, ip, created_at, updated_at

که در گزینه‌های بالا

phone و user_id باید یونیک باشند

برای جلوگیری از انباشت اطلاعات هم میتونید ریکورد رو دقیقا بعد از عملیات وریفای پاک کنید و یا یک wp schedule event یا مفاهیم مشترک استفاده کنید که هرروز یکبار بررسی میکنه کد تایید هایی که به فرض از زمان اخرین اپدیت اونها 30 دقیقه یا 1 ساعت میگذره پاکشون کنه.

موفق باشید

بهترین پاسخ
بهنام مرادی ۲۰ شهریور ۱۴۰۲، ۰۸:۴۲

سلام بهترین روش اینه برای جلوگیری از استفاده از کد تصادفی این هست که بعد از وریفای شدن رکورد اون کد در جدول توی دیتابیس حذف کنید سششن میشه اما به دلایل امنیتی و احتمال هایجک شدن سشن وجود داره و توی این مورد و موارد مشابه توصیه نمی‌شه

وحید صالحی ۲۰ شهریور ۱۴۰۲، ۰۸:۴۴