آموزش ساخت عضویت/ورود با OnStorage
#1
سلام به همه
یه آموزش ساده ساخت فرم عضویت و ورود با سیستم ذخیره متغیرهای OnStorage آماده کردم. آخر پست سورس رو میتونید دانلود کنید.

  • یه بازی توی OnStorage بسازید.
  • یه متغیر با اسم password از نوع String بسازید.
  • یه متغیر با اسم name از نوع String بسازید. (اختیاری)
  • میتونید متغیرهای دیگه ای مثل شماره تلفن و ... اضافه کنید.
  • سیستم OnStorage به صورت خودکار واسه هر بازی که میسازید یه ستون به اسم "شناسه کاربر" میسازه که ما اینجا ازش واسه ذخیره ایمیل کاربر استفاده می کنیم.
  • توی این آموزش از پلاگین های Browser برای نمایش پیام ها و LocalStorage برای ذخیره برخی اطلاعات استفاده میکنیم.
توی کانستراکت فرم ثبت نام و ورود بسازید:
[تصویر:  login_signup.png]
  • خب الان با استفاده از فرم سمت راست باید عملیات ثبت نام کاربر رو انجام بدیم.
  • در ابتدا چک میکنیم که آیا کاربر موقع انتخاب گزینه ثبت نام تمام موارد خواسته شده توی فرم رو پر کرده یا نه:
[تصویر:  signup1.png]
ایونت 1 - بررسی عدم وارد کردن ایمیل توسط کاربر و نمایش پیام خطا
ایونت 2 - بررسی عدم وارد کردن نام توسط کاربر و نمایش پیام خطا
ایونت 3 - بررسی عدم وارد کردن رمز توسط کاربر و نمایش پیام خطا
  • در ادامه چک میکنیم که اگه هنگام انتخاب گزینه ثبت نام فرم کامل پر شده اطلاعات به هاست ارسال بشه:
[تصویر:  signup2.png]
ایونت 4 - بررسی وارد کردن تمامی اطلاعات و ارسال داده ها
ایونت 5 - نمایش پیام ثبت نام با موفقیت انجام شد بعد از ارسال داده ها
ایونت 6 - نمایش پیام خطا در هنگام ثبت نام بعد از ارسال نشدن داده ها

نحوه ارسال داده ها:
[تصویر:  signup3.png]
GameId - شناسه بازی در پنل مدیریت
Token - توکن بازی در پنل مدیریت
UserId - شناسه کاربر (در این مثال ایمیل رو به عنوان شناسه قرار دادیم)
مقادیر بعدی - ارسال نام و رمز کاربر
  • کار ساخت فرم ثبت نام تموم شد.
  • الان با استفاده از فرم سمت چپ عملیات ورود به حساب کاربری رو انجام میدیم.
  • قبل از اون یه لی اوت جدید بسازید و داخل اون یه تکست و یه باتن قرار بدید:
[تصویر:  dashboard.png]
  • از این لی اوت به عنوان پنل کاربر استفاده میکنیم که توی اون یه متن خوش آمدید و یه گزینه خروج قرار داره.
  • برگردیم به همون فرم ورود. اول چک میکنیم کاربر اطلاعات خواسته شده رو پر کرده یا نه
[تصویر:  login1.png]
ایونت 7 - بررسی عدم وارد کردن ایمیل توسط کاربر و نمایش پیام خطا
ایونت 8 - بررسی عدم وارد کردن نام توسط کاربر و نمایش پیام خطا
  • در ادامه چک میکنیم اگه کاربر همه اطلاعات خواسته شده رو پر کرده داده ها رو از هاست دریافت کنیم. دقت کنید چیزی ارسال نمیکنیم و فقط دریافت میکنیم.
[تصویر:  login2.png]

نحوه دریافت اطلاعات:
[تصویر:  login3.png]
GameId - شناسه بازی در پنل مدیریت
TokenId - توکن بازی در پنل مدیریت
UserId - شناسه کاربر (که در اینجا ایمیل وارد شده هستش)
  • بعد از این کار چک میکنیم داده ها دریافت شدن یا نه و اگه دریافت شدن آیا اطلاعاتی که کاربر وارد کرده درست هستن یا نه.
[تصویر:  login4.png]
ایونت 10 - نمایش پیام خطا اگه اطلاعات از هاست دریافت نشدن
ایونت 11 - اگه ایمیلی که کاربر وارد کرده قبلا ثبت نام نکرده باشه پیامی با عنوان شما تاکنون ثبت نام نکرده اید نشون داده میشه
ایونت 12 - اگه اطلاعات دریافت شدن چک میکنیم که رمزی که کاربر وارد کرده با رمزی که از هاست دریافت کردیم یکی نبود پیامی با عنوان رمز وارد شده اشتباه است نشون داده میشه
ایونت 13 - اگه اطلاعات دریافت شدن و رمز هم درست بود، نام و ایمیل کاربر رو که از هاست دریافت کردیم با استفاده از LocalStorage ذخیره میکنیم. یه پیام ورود انجام شد نشون داده میشه و در نهایت کاربر رو به لی اوت پنل کاربری میفرستیم.
  • تا اینجا کار ورود به حساب کاربر هم انجام شده ولی یه چندتا کار دیگه میتونیم انجام بدیم که اختیاری هستن.
[تصویر:  start_layout.png]
ایونت 14 - توی شروع لی اوت فرم ثبت نام و ورود چک میکنیم ایمیل کاربر توی LocalStorage هست یا نه.
ایونت 15 - اگه ایمیل کاربر وجود داشت کاربر رو به صفحه پنل کاربری میفرستیم.

توی لی اوت پنل کاربری:
[تصویر:  dashboard2.png]
ایونت 1 - توی شروع لی اوت چک میکنیم اسم کاربر توی LocalStorage وجود داره یا نه.
ایونت 2 - اگه اسم کاربر وجود داشت اون رو دریافت می کنیم.
ایونت 3 - اگه دریافت انجام شد اسم کاربر رو به متن خوش آمد گویی اضافه می کنیم.

[تصویر:  logout.png]
ایونت 4 - اگه کاربر گزینه خروج از حساب کاربری رو انتخاب کرد اسم و ایمیل خودش از LocalStorage حذف بشن.
ایونت 5 - اگه اطلاعات حذف شدن کاربر رو به صفحه عضویت/ورود میفرستیم.

[تصویر:  dashboard3.png]
ایونت 6 - اگه اسم کاربر توی LocalStorage نباشه کاربر رو به صفحه ورود میفرستیم.

[تصویر:  logged.png]
نمونه صفحه پنل کاربری بعد از ورود کاربر



  پاسخ


 سپاس شده توسط: hasansanaei ، hamid5700 ، MohammadHadi ، ghasem ، Alireza3d ، amin COD ، mhc ، rezamms ، aag ، M.gh ، amin hosseini ، Master Badfar ، saman ، ᔕinaᗪehghani
#2
توی این پست میخوایم کاری کنیم که رمز کاربر به صورت کدشده توی پنل مدیریت ثبت بشه.
برای این کار از پلاگین CBHash استفاده کردم.

توی لی اوت عضویت/ورود 2 متغیر با اسم های tag و password از نوع text میسازیم.
[تصویر:  secure1.png]

ایونت 4 توی پست قبلی رو به صورت زیر ویرایش میکنیم
[تصویر:  secure2.png]
اکشن دوم توی ایونت 4 به شکل زیر:
[تصویر:  secure3.png]
Key - کلید کدکردن خصوصی
Data - رمزی که کاربر وارد کرده

ایونت زیر رو اضافه می کنیم
[تصویر:  secure5.png]
این ایونت بعد از کدشدن رمزی که کاربر وارد کرده اجرا میشه. توی این ایونت اطلاعات رو به صورت زیر ارسال می کنیم:
[تصویر:  secure4.png]

ایونت 9 توی پست قبل رو به صورت زیر ویرایش می کنیم:
[تصویر:  secure6.png]
اکشن دوم این ایونت به صورت زیر است:
[تصویر:  secure7.png]
Key - کلید کدکردن خصوصی
Data - رمزی که کاربر وارد کرده

ایونت زیر رو اضافه می کنیم
[تصویر:  secure8.png]
این ایونت بعد از کد شدن رمزی که کاربر وارد کرده اجرا میشه. اکشن اول مقدار کدشده رو به متغیر password می دهیم. اکشن دوم اطلاعات کاربر رو دریافت می کنیم.

ایونت های 12 و 13 رو به صورت زیر تغییر میدیم:
[تصویر:  secure9.png]
*توی چک کردن رمز بجای رمز وارد شده توسط کاربر متغیر password رو قرار دادیم.

  پاسخ


 سپاس شده توسط: hasansanaei ، shazde ، hamid5700 ، ghasem ، Alireza3d ، aag ، M.gh ، MohammadHadi ، amin hosseini ، mohsen_nasri ، ItzMiad ، ᔕinaᗪehghani
#3
سلام آقا میلاد عزیز .

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

اما میلاد جان استفاده از پلاگین on storage رو نمیتونم به کسی توصیه کنم .
دلایل امنیتی بسیار زیادی هست ؛ 

میتونیم به همین موضوع پستی که گذاشتید اشاره کنیم که متاسفانه پسورد کاربر نباید به این راحتی قابل نمایش باشه .

اگر شما یک تیبل در دیتابیس بسازید که متغیر های مختلفی در اون اضافه کنید ، به عنوان مثال پسورد و نام کاربری و ...

پلاگین شما در زمان دریافت اطلاعات تمامی این اطلاعات رو دریافت میکنه ، یعنی چیزی که ما نمیخوایم ، مسلما کاربر ما رمز عبورش رو خودش وارد میکنه و ما توی سیستم خودمون ( حالا یا هر بار دریافت میکنیم یا توی خود بازی ذخیره میکنیم ) و نیازی نیست که همراه با بقیه متغیر ها اونم دریافت بشه ، اما اونم همراه با بقیه دریافت میشه و این خودش میشه ی باگ امنیتی .
علاوه بر اون پسورد ها رمزنگاری نشده هستند که اینم به شکلی ی باگ امنیتی میشه .

حالا بر میگردیم به ی سری مشکلاتی که شاید برای خیلیا مهم نباشه اما برای امثال من مهمه و شاید بخاطر همینم باشه از این پلاگین ترجیح بدم استفاده نکنم و سر خودمو برای برنامه نویسی شلوغ بکنم .

وقتی ما ی بازی آنلاین میسازیم مطمئنا یک فروشگاه هم داریم ؛
ما بازی آنلاین میسازیم تا متغیر های درون بازیمون غیر قابل هک باشه .

جالبه بدونید اگر بخوایم از پلاگین on storage استفاده بکنیم مجبوریم عین یک بازی آفلاین در کلاینت بررسی کنیم که آیا کاربر مقدار متغیر سکه یا طلا ای که داره از مقدار خریدش بیشتر هست یا نه ... این غیر حرفه ای هست و دور از کاری که ما میخوایم هست که خودش میشه باگ امنیتی .

غیر از اون پلاگین on storage برای راحتی کار بازی ساز اومده امکانی به اسم set Value زده که بیشتر بخوام باز بکنم همین موضوع هم باعث یک باگ امنیتی میشه .

به راحتی کاربر میتونه با به دست آوردن منبع ارسال این Http ها مقادیر مربوط به اکانت خودش و دیگران رو به هرشکلی که دوست داره تغییر بده ... این مسلما چیزی که ما میخوایم نیست .

متاسفانه انجام تمام این کار ها زحمات زیادی رو میخواد و مسلما وقت و انرژی زیادی صرفش میشه ، اما همه اینها راه کار داره که با توجه به نوع و شکلشون در حال حاضر On Storage بدرد افراد مبتدی با بازی های ساده و معمولی میخوره که نمیتونن برنامه نویسی کنند و واقعا این پلاگین کارشون رو راحت میکنه .

1
  پاسخ


 سپاس شده توسط: miladesign ، ghasem ، Alireza3d ، ᔕinaᗪehghani
#4
(1398/2/19، 01:54 عصر)hesam3 نوشته است: سلام آقا میلاد عزیز .

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

اما میلاد جان استفاده از پلاگین on storage رو نمیتونم به کسی توصیه کنم .
دلایل امنیتی بسیار زیادی هست ؛ 

میتونیم به همین موضوع پستی که گذاشتید اشاره کنیم که متاسفانه پسورد کاربر نباید به این راحتی قابل نمایش باشه .

اگر شما یک تیبل در دیتابیس بسازید که متغیر های مختلفی در اون اضافه کنید ، به عنوان مثال پسورد و نام کاربری و ...

پلاگین شما در زمان دریافت اطلاعات تمامی این اطلاعات رو دریافت میکنه ، یعنی چیزی که ما نمیخوایم ، مسلما کاربر ما رمز عبورش رو خودش وارد میکنه و ما توی سیستم خودمون ( حالا یا هر بار دریافت میکنیم یا توی خود بازی ذخیره میکنیم ) و نیازی نیست که همراه با بقیه متغیر ها اونم دریافت بشه ، اما اونم همراه با بقیه دریافت میشه و این خودش میشه ی باگ امنیتی .
علاوه بر اون پسورد ها رمزنگاری نشده هستند که اینم به شکلی ی باگ امنیتی میشه .

حالا بر میگردیم به ی سری مشکلاتی که شاید برای خیلیا مهم نباشه اما برای امثال من مهمه و شاید بخاطر همینم باشه از این پلاگین ترجیح بدم استفاده نکنم و سر خودمو برای برنامه نویسی شلوغ بکنم .

وقتی ما ی بازی آنلاین میسازیم مطمئنا یک فروشگاه هم داریم ؛
ما بازی آنلاین میسازیم تا متغیر های درون بازیمون غیر قابل هک باشه .

جالبه بدونید اگر بخوایم از پلاگین on storage استفاده بکنیم مجبوریم عین یک بازی آفلاین در کلاینت بررسی کنیم که آیا کاربر مقدار متغیر سکه یا طلا ای که داره از مقدار خریدش بیشتر هست یا نه ... این غیر حرفه ای هست و دور از کاری که ما میخوایم هست که خودش میشه باگ امنیتی .

غیر از اون پلاگین on storage برای راحتی کار بازی ساز اومده امکانی به اسم set Value زده که بیشتر بخوام باز بکنم همین موضوع هم باعث یک باگ امنیتی میشه .

به راحتی کاربر میتونه با به دست آوردن منبع ارسال این Http ها مقادیر مربوط به اکانت خودش و دیگران رو به هرشکلی که دوست داره تغییر بده ... این مسلما چیزی که ما میخوایم نیست .

متاسفانه انجام تمام این کار ها زحمات زیادی رو میخواد و مسلما وقت و انرژی زیادی صرفش میشه ، اما همه اینها راه کار داره که با توجه به نوع و شکلشون در حال حاضر On Storage بدرد افراد مبتدی با بازی های ساده و معمولی میخوره که نمیتونن برنامه نویسی کنند و واقعا این پلاگین کارشون رو راحت میکنه .

1

با تشکر از آقا میلاد عزیز به خاطر زحمت هاشون.. 
یه سوال از اقا حسام .. 
این مشکلاتی که گفتید آیا برای بازی اچ تی ام ال که فقط روی سرور اجرا میشه هم وجود داره ؟؟
یعنی اون نوع بازی ای نیست که تو دستگاه کاربر نصب بشه ..
ببخشید من مبتدی هستم و سوالام هم طبعا مبتدیانه ست 
  پاسخ


 سپاس شده توسط:
#5
(1398/2/19، 09:14 عصر)alirezaa82 نوشته است:
(1398/2/19، 01:54 عصر)hesam3 نوشته است: سلام آقا میلاد عزیز .

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

اما میلاد جان استفاده از پلاگین on storage رو نمیتونم به کسی توصیه کنم .
دلایل امنیتی بسیار زیادی هست ؛ 

میتونیم به همین موضوع پستی که گذاشتید اشاره کنیم که متاسفانه پسورد کاربر نباید به این راحتی قابل نمایش باشه .

اگر شما یک تیبل در دیتابیس بسازید که متغیر های مختلفی در اون اضافه کنید ، به عنوان مثال پسورد و نام کاربری و ...

پلاگین شما در زمان دریافت اطلاعات تمامی این اطلاعات رو دریافت میکنه ، یعنی چیزی که ما نمیخوایم ، مسلما کاربر ما رمز عبورش رو خودش وارد میکنه و ما توی سیستم خودمون ( حالا یا هر بار دریافت میکنیم یا توی خود بازی ذخیره میکنیم ) و نیازی نیست که همراه با بقیه متغیر ها اونم دریافت بشه ، اما اونم همراه با بقیه دریافت میشه و این خودش میشه ی باگ امنیتی .
علاوه بر اون پسورد ها رمزنگاری نشده هستند که اینم به شکلی ی باگ امنیتی میشه .

حالا بر میگردیم به ی سری مشکلاتی که شاید برای خیلیا مهم نباشه اما برای امثال من مهمه و شاید بخاطر همینم باشه از این پلاگین ترجیح بدم استفاده نکنم و سر خودمو برای برنامه نویسی شلوغ بکنم .

وقتی ما ی بازی آنلاین میسازیم مطمئنا یک فروشگاه هم داریم ؛
ما بازی آنلاین میسازیم تا متغیر های درون بازیمون غیر قابل هک باشه .

جالبه بدونید اگر بخوایم از پلاگین on storage استفاده بکنیم مجبوریم عین یک بازی آفلاین در کلاینت بررسی کنیم که آیا کاربر مقدار متغیر سکه یا طلا ای که داره از مقدار خریدش بیشتر هست یا نه ... این غیر حرفه ای هست و دور از کاری که ما میخوایم هست که خودش میشه باگ امنیتی .

غیر از اون پلاگین on storage برای راحتی کار بازی ساز اومده امکانی به اسم set Value زده که بیشتر بخوام باز بکنم همین موضوع هم باعث یک باگ امنیتی میشه .

به راحتی کاربر میتونه با به دست آوردن منبع ارسال این Http ها مقادیر مربوط به اکانت خودش و دیگران رو به هرشکلی که دوست داره تغییر بده ... این مسلما چیزی که ما میخوایم نیست .

متاسفانه انجام تمام این کار ها زحمات زیادی رو میخواد و مسلما وقت و انرژی زیادی صرفش میشه ، اما همه اینها راه کار داره که با توجه به نوع و شکلشون در حال حاضر On Storage بدرد افراد مبتدی با بازی های ساده و معمولی میخوره که نمیتونن برنامه نویسی کنند و واقعا این پلاگین کارشون رو راحت میکنه .

1

با تشکر از آقا میلاد عزیز به خاطر زحمت هاشون.. 
یه سوال از اقا حسام .. 
این مشکلاتی که گفتید آیا برای بازی اچ تی ام ال که فقط روی سرور اجرا میشه هم وجود داره ؟؟
یعنی اون نوع بازی ای نیست که تو دستگاه کاربر نصب بشه ..
ببخشید من مبتدی هستم و سوالام هم طبعا مبتدیانه ست 

سلام

فرقی نمیکنه .

به هر حال http سرور شما توی هر حالتی با کمترین امکانات برای فردی که قصد هک کردن داشته باشه امکان پذیر باشه .
جالب تر از این ، این هست که بعضیا برای خود شیرینی و مسائل دیگه باگ های امنیتی بازی هارو توی تلگرام میذارن که این مورد باعث میشه افراد بیشتری از اون استفاده کنند .


قبلا یک اپ داشتم که بعد از حدود 1 سال Api سمت سرور یک باگی حدود فقط 1 روز رخ داده بود اونم بخاطر یک اشتباهی که توی فایل های جدید داشتم ...
توی همون 24 ساعت بیش از 2 میلیون ضرر خورد بهم   21

البته بازی کمی بحثش متفاوت هست .
  پاسخ


 سپاس شده توسط: Alireza3d ، aag ، ᔕinaᗪehghani
#6
سلام آقا میلاد

این پروژه شما باگ داره. اونم اینه که اگر یه کاربر ثبت نام کرده باشه و یکی دیگه با همون اطلاعات دوباره ثبت نام کنه اطلاعات کاربر اول عوض میشه. برای مثال کاربر 1 میاد اطلاعاتشو میزنه: 

email:[email protected]
pass:123456789
name:reza

حالا کاربر 2 میاد همون اطلاعات رو میزنه و فقط رمز رو یه عدد دیگه میزنه. اینجا اطلاعات کاربر 1 عوض میشه.

راهی نیست که بگیم اگر در ثبت نام email متشابه وجود داشت ارور بده؟
  پاسخ


 سپاس شده توسط: M.gh
#7
(1398/5/1، 11:37 صبح)rezamms' نوشته است: سلام آقا میلاد

این پروژه شما باگ داره. اونم اینه که اگر یه کاربر ثبت نام کرده باشه و یکی دیگه با همون اطلاعات دوباره ثبت نام کنه اطلاعات کاربر اول عوض میشه. برای مثال کاربر 1 میاد اطلاعاتشو میزنه: 

email:[email protected]
pass:123456789
name:reza

حالا کاربر 2 میاد همون اطلاعات رو میزنه و فقط رمز رو یه عدد دیگه میزنه. اینجا اطلاعات کاربر 1 عوض میشه.

راهی نیست که بگیم اگر در ثبت نام email متشابه وجود داشت ارور بده؟


 

سلام و ارادتمند
این باگ نیست و در اصل اقا میلاد دست استفاده کننده رو باز گذاشته شما میتونی از ایونت زیر استفاده کنید
http://s14.picofile.com/file/8407802776/...%D8%B8.png


[تصویر:  Construct_2_login_event_19_06_1399_08_26...%D8%B8.png]

 
#مستر_الکترونیک
  پاسخ


 سپاس شده توسط:
#8
انجمن هم در و دیوارش نوشته که تاپیک قدیمی رو بالا نیارین و دست شما رو باز گذاشته که پست قدیمی رو بالا نیارین
  پاسخ


 سپاس شده توسط:
#9
(1399/6/19، 08:34 عصر)M.gh نوشته است: انجمن هم در و دیوارش نوشته که تاپیک قدیمی رو بالا نیارین و دست شما رو باز گذاشته که پست قدیمی رو بالا نیارین
قبلا هم اعلام کردم انجمن مدیر داره ، خودم پست رو دیدم و دلیلی برای اخطار ندیدم ...
پست قدیمی هم بالا میاد شما پیام نده . خود مدیران ببینند در صورت لزوم پاک میکنند و اخطار میدن .
  پاسخ


 سپاس شده توسط: Amirhesam.KH ، amin hosseini ، ᔕinaᗪehghani
#10
(1399/6/19، 08:34 عصر)M.gh' نوشته است: انجمن هم در و دیوارش نوشته که تاپیک قدیمی رو بالا نیارین و دست شما رو باز گذاشته که پست قدیمی رو بالا نیارین

 

شرمنده من قصدم کمک رسانی به این دوستمون بود قصد نقص قوانین نداشتم

 
#مستر_الکترونیک
  پاسخ


 سپاس شده توسط:


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Star حل شده آموزش های داغ داغ Zahra By 3 3,193 1399/4/17، 06:25 عصر
آخرین ارسال: FARZAD BLACK
Big Grin مشکل build وینوس _1515Team_ 0 1,770 1398/12/22، 11:46 عصر
آخرین ارسال: _1515Team_
  ورود hasiri 1 2,063 1398/11/8، 09:54 عصر
آخرین ارسال: M.gh
  ساخت range بازی با کانستراکت 2 amirgoli 6 4,333 1398/6/1، 03:17 عصر
آخرین ارسال: amin COD
  آموزش پنهان کردن filechooser aag 7 5,947 1398/5/13، 07:24 عصر
آخرین ارسال: oak

پرش به انجمن: