ثبت نام کاربر با شماره
#1

 سلام
میخواستم بدونم که آیا میشه تو کانستراکت از ثبت نام کاربر با شماره موبایل استفاده کرد و از ظریق پنل پیامک برای کاربر کد فعالسازی بفرستیم؟
  پاسخ


 سپاس شده توسط: oak
#2
بله میشه
شما باید سامانه پیامکی داشته باشید
و همینطور یه هاست و دیتابیس قوی که شماره کاربر رو در آن ذخیره کنید و از طریق PHP و AIP اون سامانه پیامکی برای شماره ای که ثبت کرده اید ، یک پیامک بفرستید با متنی که خودتون می خواهید ...
همینطور شما نیاز داری برای هر کاربر علاوه بر شماره ، یک کد فعال سازی مثلا 24 ساعته ذخیره کنید و با PHP بنویسید که هر 24 ساعت اون بلوک مربوطه خالی بشه و همینطور لازم دارید که از طریق کانستراکت و با استفاده از پلاگین AJAX ، شماره رو پست کنید و همینطور یه درخواست بفرستید که یک کد فعال سازی رندوم درست کنه مثلا 5 رقمی
رقم اول رندوم بین 0 تا 9
رقم دوم هم همینطور
وباید بگی اگر کد فعال سازی دو کاربر یکی شد کد اونی که آخر اومده دوباره رندوم انتخاب بشه
و پس از 50 ثانیه براش از طریق پیامک بفرستی ..
[تصویر:  default-yellow.svg]
  پاسخ


 سپاس شده توسط: hasansanaei ، [email protected]
#3
ممنون خیلی توضیحاتتون کامل بود
من اون بخش کانستراکت و کانکت کردنش به api رو بلد نیستم
میشه در این مورد یه کمکی بکنید؟
چطور از کانستراکت شماره ای که کاربر وارد کرده رو بفرستم به سرور؟
  پاسخ


 سپاس شده توسط:
#4
(1399/1/18، 10:31 صبح)[email protected] نوشته است: ممنون خیلی توضیحاتتون کامل بود
من اون بخش کانستراکت و کانکت کردنش به api رو بلد نیستم
میشه در این مورد یه کمکی بکنید؟
چطور از کانستراکت شماره ای که کاربر وارد کرده رو بفرستم به سرور؟
راجع به Api که نمیشه حرفی زد چون Api هر سرویس دهنده سامانه پیامکی فرق می کنه
ولی میتونید برای خرید سامانه پیامکی از سایت زیر خرید کنید :
301 Moved Permanently
با Ajax میتونید درخواست به سرور بفرستید و فایل هاتون رو پست کنید
برای درک بهتر ، آموزش برنامه نویسی سمت سرور آقا مجتبی عزیز رو نگاه کنید که توی انجمن هم هست
 
[تصویر:  default-yellow.svg]
  پاسخ


 سپاس شده توسط: [email protected]
#5
این هم کد تخفیف بیست درصدی سایت فراز اس ام اس

cotakhfif20
کانال مطالب آرشیوی کانستراکت 2

آیدی کانال
  پاسخ


 سپاس شده توسط: [email protected] ، oak
#6
(1399/1/18، 10:31 صبح)[email protected] نوشته است: ممنون خیلی توضیحاتتون کامل بود
من اون بخش کانستراکت و کانکت کردنش به api رو بلد نیستم
میشه در این مورد یه کمکی بکنید؟
چطور از کانستراکت شماره ای که کاربر وارد کرده رو بفرستم به سرور؟


در تکمیل گفته های دیگر دوستان شما باید با استفاده از AJAX به یک فایل PHP در سرور یا هاستتون که در اون از API شرکت ارائه دهنده خدمات پیامک استفاده کردین پیامک ارسال کنین. در واقع شما در پروژه تون ممکنه از 2FA (تأیید دو مرحله ای) بخواین استفاده کنین که باید یک کد منحصر به فرد و یکتا برای کاربر پیامک کنین تا با وارد کردنش بتونه پسوردش رو ریست کنه یا....
میتونین توی PHP به راحتی با توابعی که داره رشته های تصادفی ایجاد کنین و این مکانیزم رو پیاده کنین.
البته بهتره مقادیر کدهای ساخته شده رو توی دیتابیس ذخیره کنین تا بتونین واقعاً ادعا کنین که کدهایی که ساخته میشن منحصر به فرد هستن و البته بتونین درستی یا نادرستی کد وارد شده توسط کاربر رو تشخیص بدین.
اما یک تکنیک ریاضی به کارتون میاد برای اینکه بفهمین میتونین نهایتاً چقدر کد ایجاد کنین. اون تکنیک هم در واقع اصل ضرب هست. 
فرض کنین شما کد یکبار مصرف چهار کاراکتری تنها شامل اعداد برای کاربر پیامک می کنید. در ضمن کدی که ارسال می کنین داخلش رقم تکراری نمیخواین باشه. طبق اصل ضرب میتونین برای هر کاراکتر از صفر تا 9 عدد قرار بدین که یعنی برای هر کاراکتر 10 عدد میتونید داشته باشید. پس برای چهار کاراکتر دارید:
10 * 9 * 8 * 7 = 5040 
چرا برای خانه های دوم و سوم و چهارم ده حالت نداشتیم؟ چون میخواستیم بین ارقام تکرار نباشه و چون برای هر خانه در واقع یکی از تعداد کل انتخاب ها رو مصرف کردیم پس تا به خانه آخر برسیم به همین ترتیب پیش میریم. 
با این محاسبه شما فهمیدین که میتونین با این شرایط 5040 عدد کد منحصر به فرد برای کاربرهاتون ارسال کنین. حالا اگر همین مقدار کافیه که هیچی ولی اگر نیست میتونین تعداد کاراکترها رو بالاتر ببرین یا از حروف هم استفاده کنین. دقت کنین که باید مکانیزمی هم پیاده بشه تا کاربر با چند بار اشتباه زدن دیگه نتونه کد یکبار مصرف خودش رو وارد کنه تا جلوی حمله ای مثل بروت فورس گرفته بشه. در کنارش باید حساب این رو داشته باشین که وقتی این ظرفیت 5040 کد تموم شد برنامه ای که نوشتین بتونه کدهایی با تنوع حروف و کاراکترهای خاص و یا کاراکترهای بیشتر ایجاد کنه و به تکرار نیفته.
موفق باشین
غایب
  پاسخ


 سپاس شده توسط: oak ، M.gh ، [email protected]
#7
(1399/1/18، 09:31 صبح)oak نوشته است:  


برای اعمال محدودیت های زمانی در تکمیل گفته های oak عزیز باید بگم که میتونی از تایم استمپ (زمان یونیکس) استفاده کنی.
در واقع تایم استمپ (Timestamp) یا همون زمان یونیکس یک نوع سیستم تاریخ و ساعت هست که نسبت به زمان عادی ما انسانها که تاریخ و ساعت رو بیان می کنیم پردازشش برای رایانه ها بسیار راحت تره. برای اینکه بتونی تایم استمپ یک زمان مشخص رو محاسبه کنی باید تعداد ثانیه های سپری شده از Epoch Time (زمان مبدأ) یکم ژانویه سال 1970 میلادی رو محاسبه کنی. البته در راه محاسبه سال های کبیسه میلادی رو هم باید در نظر بگیری و حواست بهشون باشه. لازم نیست که خودت مکانیزمی برای محاسبه تایم استمپ ایجاد کنی چرا که بسیاری از زبان های برنامه نویسی توابعی دارن که تایم استمپ رو محاسبه میکنه. البته توی کانستراکت هم پلاگینی وجود داره که تایم استمپ رو محاسبه میکنه.
برای اینکه در PHP تایم استمپ زمان کنونی رو دریافت کنی میتونی از تابع time() استفاده کنی.
نکته ای که هست اینه که فرض کن میخوای کدی که الان توی دیتابیس هست و برای کاربر پیامک شده بعد از دو دقیقه فاقد اعتبار بشه. پس باید یک Column (ردیف) به نام Exp_time در جدول دیتابیست ایجاد کنی و مقدار اون ردیف رو برای هر رکورد برابر قرار بدی با تایم استمپ لحظه ساخت کد بعلاوه 120.
علاوه بر این زمانی که کاربر داره کد رو وارد میکنه باید تایم استمپ اون لحظه رو دریافت کنی و ببینی با تایم استمپ ذخیره شده در دیتابیس برابر هست مقدارش یا نه. اگر برابر باشه که معنیش اینه دو دقیقه سپری شده و کد هم فاقد اعتبار ولی اگر برابر نبود یعنی اینکه هنوز دو دقیقه سپری نشده. میتونی با کم کردن تایم استمپ ذخیره شده در دیتابیس و تایم استمپ لحظه ای که کاربر کد رو وارد میکنه تشخیص بدی که چقدر تا پایان دو دقیقه برحسب ثانیه باقی مونده. دقت کن که برای اعمال این مکانیزم (شمارش معکوس تا پایان اعتبار کد) حتماً باید تایم استمپ ذخیره شده در دیتابیس رو از تایم استمپ کنونی کم کنی چرا که تایم استمپ ذخیره شده در دیتابیس چون مال آینده است مقدارش بزرگتر هست از تایم استمپ کنونی و اگر شما تایم استمپ کنونی رو از تایم استمپ ذخیره شده در دیتابیس کم کنی عدد منفی حاصل میشه.
اینطوری میتونی به صورت اصولی و درست محدودیت های زمانی موردنظرت رو اعمال کنی.
غایب
  پاسخ


 سپاس شده توسط: [email protected]
#8
ممنون از توضیحات عالیتون
یه سوال اول اینکه چرا اون کد چهار رقمی نباید رقم تکراری داشته باشه؟مثلا کد 1197 باشه که دوتا یک داره؟
دوم برای زمان نمیتونم بگم همون فال php که کد رو درست کرد و گزاشت تو دیتابیس بعد از دو دقیقه اون کد رو از دیتابیس برداره؟
ینی بگم یه کد رندوم ایجاد کنه و بزاره تو دیتابیس بعد 2 دقیقه صبر کنه بعد اون قسمت از جدول دیتابیسو پاک کنه
  پاسخ


 سپاس شده توسط:
#9
(1399/1/19، 02:53 صبح)[email protected] نوشته است: "[email protected]" pid='50448' dateline='1586211817'
نقل قول:
ممنون از توضیحات عالیتون
یه سوال اول اینکه چرا اون کد چهار رقمی نباید رقم تکراری داشته باشه؟مثلا کد 1197 باشه که دوتا یک داره؟
دوم برای زمان نمیتونم بگم همون فال php که کد رو درست کرد و گزاشت تو دیتابیس بعد از دو دقیقه اون کد رو از دیتابیس برداره؟
ینی بگم یه کد رندوم ایجاد کنه و بزاره تو دیتابیس بعد 2 دقیقه صبر کنه بعد اون قسمت از جدول دیتابیسو پاک کنه
جناب MasterBadfar این دوستمون درست میگه
چرا نباید تکراری داشته باشه؟؟؟
اگر منظورتون که قاطی نشدن کد کاربر دیگست که اونم راه حلشو گفته بودم ، به محض اینکه گذاشت توی دیتابیس چک کنه ببینه اگر برابر بود با مال یکی دیگه ، اونی که هنوز پیامک نشده دوباره ست بشه و بعد پیامک کنه...
البته ممکنه که سرعت سرور بیاد پاییین ...
 
[تصویر:  default-yellow.svg]
  پاسخ


 سپاس شده توسط: [email protected]
#10
(1399/1/19، 09:35 صبح)oak نوشته است:
(1399/1/19، 02:53 صبح)[email protected] نوشته است: "[email protected]" pid='50448' dateline='1586211817'

 
نقل قول:  
ممنون از توضیحات عالیتون
یه سوال اول اینکه چرا اون کد چهار رقمی نباید رقم تکراری داشته باشه؟مثلا کد 1197 باشه که دوتا یک داره؟
دوم برای زمان نمیتونم بگم همون فال php که کد رو درست کرد و گزاشت تو دیتابیس بعد از دو دقیقه اون کد رو از دیتابیس برداره؟
ینی بگم یه کد رندوم ایجاد کنه و بزاره تو دیتابیس بعد 2 دقیقه صبر کنه بعد اون قسمت از جدول دیتابیسو پاک کنه
  
 
جناب MasterBadfar این دوستمون درست میگه
چرا نباید تکراری داشته باشه؟؟؟
اگر منظورتون که قاطی نشدن کد کاربر دیگست که اونم راه حلشو گفته بودم ، به محض اینکه گذاشت توی دیتابیس چک کنه ببینه اگر برابر بود با مال یکی دیگه ، اونی که هنوز پیامک نشده دوباره ست بشه و بعد پیامک کنه...
البته ممکنه که سرعت سرور بیاد پاییین ...
 

راستش من همینطوری اومدم برای اینکه آشنایی عمیق تری با اصل ضرب براتون ایجاد کنم اینطوری مثال زدم. ولی در کل تکرار کمتر از چهاربار یک کاراکتر در یک کد چهار رقمی میتونه خوب باشه. معنیش اینه که کدی مثل 4444 یا 1111 یا 00000 زیاد جالب نیستن و ممکنه مهاجم بتونه در همون حدس های اولیه به راحتی سد 2FA رو دور بزنه. پس باید توی کد PHP خودت لحاظ کنی که کدی که توسط توابع رندوم ایجاد میشه کدی غیر از این کدها باشه.
موفق باشی
اگر مشکلی توی کدنویسی PHP داشتی میتونی توی همین تاپیک اعلام کنی.
غایب
  پاسخ


 سپاس شده توسط: oak ، [email protected]


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  حل شده خرید درون برنامه مایکت در وب ویو Arianm 3 840 1402/4/25، 12:01 عصر
آخرین ارسال: Arianm
Wink سیستم شخصی سازی خودرو Arianm 1 389 1402/4/24، 05:21 عصر
آخرین ارسال: SHAMIRZA
  علت بازی نشدن وقتی نصب شده amirhosseinalizadehgharebaba81 1 313 1402/4/23، 02:22 عصر
آخرین ارسال: (:--ALI--:)
  چگونگی اجرا بازی روی ه‍است ایران (:--ALI--:) 8 1,461 1402/3/24، 04:50 عصر
آخرین ارسال: (:--ALI--:)
  وصل شدن به روح هاست قبلی :) amirhosseinalizadehgharebaba 2 2,026 1401/11/2، 09:43 عصر
آخرین ارسال: amirhosseinalizadehgharebaba

پرش به انجمن: