مهمان عزیز خوش‌آمدید. ورود عضــویت


آموزش ساخت عضویت/ورود با 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]
نمونه صفحه پنل کاربری بعد از ورود کاربر



 
پاسخ دهید
 سپاس شده توسط: hesam3 ، hamid5700 ، محمد هادی ، ghasem ، alirezaa82 ، amin COD ، mhc ، rezamms ، akhm2002
#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 رو قرار دادیم.

 
پاسخ دهید
 سپاس شده توسط: hesam3 ، shazde ، hamid5700 ، ghasem ، alirezaa82 ، akhm2002
#3
سلام آقا میلاد عزیز .

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

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

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

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

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

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

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

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

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

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

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

1
[عکس: Garage.png]
بزودی ...
موفق و پیروز باشید / حسن ثنایی
 
پاسخ دهید
 سپاس شده توسط: miladesign ، ghasem ، alirezaa82
#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

البته بازی کمی بحثش متفاوت هست .
[عکس: Garage.png]
بزودی ...
موفق و پیروز باشید / حسن ثنایی
 
پاسخ دهید
 سپاس شده توسط: alirezaa82
  


پرش به انجمن: