تکمیل فرم ثبت نام

Complete User Registration System Using PHP

0 80

تکمیل فرم ثبت نام

تا این قسمت از پروژه اعتبارسنجی فرم را انجام داده ایم و ایمیل را نیز چک کرده ایم. حالا باید کدهای فرم ثبت نام را تکمیل کنیم تا بتوانیم کاربران را به صورت واقعی ثبت نام کنیم. از پوشه ی controllers وارد فایل Users.php شوید و قسمتی را پیدا کنید که به شکل زیر است:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

این کد را پایین تر از کد ('die ('SUCCESS (که الان حذف شده است) اضافه کنید. این تابع یک هش قوی برای ما تولید می کند. در واقع هش ها حالت رمز نگاری شده ی یک رشته هستند و دلیل استفاده از آن ها نیز حفاظت از اطلاعات شخصی کاربران از دو جهت است:

  • اول: شما مدیر سایت هستید اما صاحب اطلاعات کاربر نیستید بنابراین شما نیز نباید از رمز عبور کاربر خبر داشته باشید یا بتوانید آن را مشاهده کنید.
  • دوم: اگر زمانی وب سایت شما هک شود، هکر نباید به راحتی به رمز تمام کاربران دسترسی پیدا کند چرا که اکثر کاربران از یک یا دو رمز برای حساب های مختلف خود (متاسفانه حتی حساب های بانکی) استفاده می کنند بنابراین با هک شدن حسابشان در سایت شما ممکن است حساب بانکی شان نیز خالی شود.

شما هیچ وقت نباید مسئولیت اخلاقی خود را به عنوان یک توسعه دهنده و برنامه نویس از یاد ببرید. در واقع کاربران به شما اعتماد کرده اند و شما حافظ اطلاعات آن ها هستید و نباید با بهانه های واهی (مثل انجام عملیات بیشتر توسط سرور هنگام هش) این وظیفه را پشت گوش بیندازید.

مثال از یک رشته ی عادی:
Coding with Roxo.ir is really fun

مثال از همین رشته به صورت هش شده (بر اساس الگوریتم SHA256):
30d6e4625be4d1d84b892e01713453fece57ec04739a5fdee21e267a065c419c

پایین تر از این کد باید تابعی بسازیم که عملیات ثبت نام را انجام دهد. برای مطمئن شدن از صحت کارایی برنامه آن را در یک if قرار می دهیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

توضیح کد:

این تابع یک پارامتر به نام data دارد که تمام فیلدهای ورودی کاربر است. دقت کنید که در data رمز عبور کاربر به صورت هش شده قرار خواهد داشت چرا که قبل تر آن را هش کردیم. سپس با استفاده از متد query که در کلاس پایگاه داده تعریف کرده بودیم، کوئری خود را اجرا می کنیم:

حالا باید مقادیر را bind کنیم، بنابراین از همان تابع bind استفاده کرده ایم. اگر یادتان باشد یک متد به نام execute در کلاس پایگاه داده ایجاد کرده بودیم. در نتیجه با استفاده از همان متد کوئری را اجرا می کنیم. برای اطمینان از صحت کارایی آن را در یک شرط if قرار می دهیم.

اکنون از پوشه ی controllers دوباره وارد فایل Users.php شوید. بالاتر یک تابع به نام register ساختیم که یا true برمی گرداند یا false و اگر false برگرداند با پیام Something went wrong مواجه می شویم اما اگر true برگردانده شد یعنی کاربر ثبت نام شده است. بنابراین تنها کاری که انجام می دهیم redirect کردن او به سمت صفحه ی login است. برای انجام redirect باید به شکل زیر عمل کنیم:

اما هر بار که می خواهیم redirect انجام دهیم باید این کد تکراری را بنویسیم. بنابراین بهتر است یک تابع کمکی برای redirect ایجاد کنیم. پس وارد پوشه ی helpers می شویم و فایلی به نام url_helper.php می سازیم. این فایل را برای توابع کمکی می سازیم تا هر زمان که احساس کردیم برای کارهای جزئی به تابعی کمکی نیاز داریم آن را در این قسمت بنویسیم. فعلا برای تابع redirect این کار را انجام می دهیم:

در حالت عادی این فایل در فایل های اصلی ما بارگذاری نشده است بنابراین به فایل bootstrap.php بروید و آن را بارگذاری کنید:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

حالا به صفحه ی Register بروید و با اطلاعات دلخواه خود یک کاربر را ثبت کنید، سپس از PHPMyAdmin جدول users را بررسی کنید تا مطمئن شوید کاربر شما ثبت شده است.

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

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

در قسمت بعدی به سراغ ایجاد یک تابع کمکی برای session ها و Flash message ها (پیام هایی که فقط یک بار نمایش داده می شوند) می رویم. امیدوارم از این مقاله لذت برده باشید.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش ساخت شبکه اجتماعی به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.