اعتبارسنجی تایید پسورد در صفحه ثبت نام کاربران با PHP

8 176

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

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

پنهان و آشکاری سازی رمز عبور کاربران

برای انجام اینکار از یک چک بکس(check box) استفاده خواهیم کرد، هر زمان که کاربر این چک باکس را تیک دار کند، رمز آشکار می شود و هر زمان که تیک آن را بردارد؛ پسورد به همان صورت رمز باقی می ماند.

این کار به آسانی انجام می شود کافی است که به آدرس C:\wamp\www\ecommerce بروید و فایل customer_register.php را با استفاده از Notepad++ باز کرده و کدهای زیر را در آن پیدا کنید.

حالا کدهای بالا را پاک کنید و کدهای زیر را به جای آنها قرار دهید.

برای اینکه بهتر بتوانید کدهای بالا را درک کنید ، بهتر است که ببینیم در عمل چه اتفاقی رخ داده است.

wamp را روشن کنید و آدرس http://localhost/ecommerce/customer_register.php را در مرورگر خود باز کنید. حالا باید تصویر زیر را ببینید.

دقت کنید در تصویر زیر تمامی فیلد های ورودی را پر کرده ام و تیک نمایش پسورد زده نشده است.

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

حالا اگر کاربر، تیک نمایش پسورد را بزند، پسورد به راحتی قابل مشاهده می باشد. به تصویر زیر نگاه کنید.

وقتی تیک نمایش پسورد زده می شود.

بعد از ایجاد چک باکس نمایش پسورد، به سراغ تطبیق دادن رمز با تایید رمز عبور می رویم.

تطبیق دادن رمز با تایید رمز

برای اینکه بتوانیم به این مهم دست پیدا کنیم، ابتدا باید پسورد دوم (یعنی همان تایید پسورد) را از فروم ورودی دریافت نماییم . به همین منظور به آدرس C:\wamp\www\ecommerce\includes رفته و فایل serve.php را باز کرده و در آن کدهای زیر را پیدا می کنیم.

آنها را پاک کرده و به جای آنها کدهای زیر را قرار می دهیم.

همانطور که مشاهده می نمایید، ابتدا، مقدار وارد شده برای پسورد شماره 2 (پسورد تایید) را با استفاده از تابع mysqli_real_escape_string مورد بررسی قرار می دهیم تا مشکل امنیتی نداشته باشد و بعد از آن از خالی بودن پسورد شماره 2  را نیز با استفاده از تابع empty چک می کنیم.

در نهایت بعد از اعمال 2 فیلتر بالا ، نوبت به آن رسیده که مقایسه ایی بین مقادیر وارد شده برای پسورد شماره 1 و پسورد شماره 2 (پسورد تایید) صورد گیرد تا اگر مانند هم نبودند با یک پیام هشدار این موضوع به اطلاع کاربر برسد.

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

وقتی که پسورد تایید را نمی دهیم

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

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

حالت دوم زمانی روی می دهد که پسورد اول با پسورد شماره 2 یکسان نباشند. به تصویر زیر نگاه کنید.

وقتی که پسورد شماره 1 با پسورد شماره 2 یکسان نباشد

واکنش سایت در این حالت به صورت زیر می باشد.

وقتی که پسورد شماره 1 با پسورد شماره 2 یکسان نباشد این پیام نمایش داده می شود

بعد از انجام فرایند بالا ، باید ip کاربر را نیز به دست آوریم چرا که به مقدار آن در جدول داده ایی customers نیاز داریم. برای اینکار فایل sever.php را باز کرده و کدهای زیر را پیدا کنید.

آنها را پاک کنید و کدهای زیر را به جای آنها قرار دهید.

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

چگونه در صورت وجود یک خطا در اعتباسنجی اطلاعات سایر فیلدها را نگه داریم؟

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

کاربر نام شهر خودش را وارد نکرده است.

وقتی کاربر، نام شهر را انتخاب نمی کند

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

تمامی فیلدهای ورودی خالی می شود و کاربر باید از دوباره آنها را پر کند

برای برطرف کردن این مشکل کافی است اطلاعات صحیح وارد شده در فایل customer_register.php را ثبت کنیم.

نگهداری تگ های input

از همان کادر اول شروع می کنیم. برای اینکه پس از بازگشت کادر نام و نام خانوادگی خالی نباشد کافی است به آدرس C:\wamp\www\ecommerce بروید و فایل  customer_register.php را با استفاده از Notepad++ باز کنید. سپس در آن کدهای زیر را پیدا کنید.

آنها را پاک کنید و کدهای زیر را به جای آنها قرار دهید.

همانطور که مشاهده می نمایید با اضافه کردن  value="<?php echo $c_name; ?>"  و  value="<?php echo $c_lastname; ?>" به تگ های input نام و نام خانوادگی، می گوییم که اگر مقدار قبلا داده شده است این مقادیر به عنوان پیش فرض در کادرها به نمایش در بیایند. به صورت مشابه ای برای تمامی input هایی که از نوع text هستند (type="text") همین کار را تکرار می کنیم.

نگهداری تگ های Select

در مورد select ها قضیه متفاوت است. اگر در برگه ثبت نام مشاهده کرده باشید؛ جنسیت، نام استان و نام شهرستان از این نوع هستند. به عنوان مثال کدهای مخصوص به select جنسیت به صورت زیر هستند.

شما هم کدهای بالا را در فایل  customer_register.php پیدا کنید و آنها را پاک کرده و کدهای زیر را  به جای آنها قرار دهید.

همانطور که در کدهای بالا مشاهده می نمایید، ما با استفاده از یک شرط (شرط ما در اینجا if(isset($c_gender)) )یک option جدید تعریف کرده ایم که زمانی که $c_gender مشخص شده باشد، این option  فعال می گردد و سایت به جای اینکه ورودی را از کاربر بگیرید، از این قسمت می گیرد.به طور مشابه همین کار را در مورد انتخاب استان و انتخاب شهر انجام می دهیم.

نگهداری تصاویر

اما در مورد نحوی گرفتن تصویر و نگهداری آن در صفحه ثبت نام وضع فرق دارد، در این جا نوع input همانطور که می دانید type="file" هست. برای اینکه بتوانیم این مشکل را برطرف کنیم باید از cookie استفاده نماییم. برای درک این موضوع مراحل زیر را انجام دهید.

ایتدا به آدرس  C:\wamp\www\ecommerce\includes می رویم و فایل server.php را باز می کنیم و کدهای زیر را در آن پیدا می کنیم.

این کدها را پاک می کنیم و کدهای زیر را به جای آنها قرار می دهیم.

اگر متوجه کد بالا نشدید در ادامه آن را به صورت مفصل توضیح خواهم داد.

در مرحله بعدی باید به آدرس C:\wamp\www\ecommerce بروید و فایل customer_register.php را باز کنید و کدهای زیر را در آن پیدا کنید .

آنها را پاک کنید و به جای آنها کدهای زیر را قرار دهید.

کار ما دیگر تمام شده است و تصویر به مدت 10 دقیقه در cookie مرورگر کاربر ذخیره می شود تا او فرایند ثبت نام را تکمیل کند.

برای اینکه بتوانبد درک کنید که کدها چه چیزی را می خواهند بگویند به تصویر زیر نگاه کنید.

فلوچارت اعتبارسنجی کاربر به هنگام ثبت نام

همانطور که در فلوچارت بالا ملاحظه می کنید:

  1. در شرط شماره 1 می گوییم آیا کوکی مربوط به تصویر وجود دارد. اگر جواب بله باشد شرط 2 برقرار می شود
  2. در شرط دوم بررسی می شود که آیا کوکی دیگری از تصویر وجود دارد یا خیر؟  اگر این شرط هم درست باشد آنگاه سایت آدرس تصویر را با استفاده از این دو کوکی به دست می آورد.
  3. اما اگر شرط شماره 1 نادرست باشد یعنی اصلا کوکی تصویر نداریم به سراغ شرط 3 می رویم. در شرط 3 ، ابتدا خالی بود تگ ورودی تصویر بررسی می شود که اگر این شرط برقرار باشد، پیغام “تصویر خود را انتخاب کنید!” صادر می شود ولی اگر شرط شماره 3 برقرار نباشد (یعنی تگ ورودی تصویر خالی نباشد) حالا باید پسوند تصویر را به دست می آوریم.
  4. سپس در شرط شماره 4 چک می کنیم آیا پسوند تصویر مجاز است و آیا حجم تصویر کمتر از 2 مگابایت هست یا نه. اگر جواب بله باشد آنگاه در شرط 5، اگر error در آپلود فایل نداشته باشیم، آنگاه تصویر آپلود می شود و آدرس آن برای ذخیره کردن در پایگاه داده در متغییر $new_address_image نگهداری خواهد شد. البته قبل از آن “کوکی های تصویر به مدت 10 دقیقه به وجود می آیند“.

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

خب دوستان عزیزم دیگر کار برنامه نویسی به پایان رسیده و زمان آن فرا رسیده است که با هم ببینیم در عمل چه اتفاقی رخ داده است. برای همین خاطر wamp را روشن کنید و در مرورگر به آدرس http://localhost/ecommerce/customer_register.php برویید. در تصویر زیر تمام فیلدها به غیر از پسورد را وارد نموده ام.

همه فیلدها به جز پسورد را پر کرده ام تا عملکرد ذخیره شدن مقادیر درست در برگه ثبت نام را مشاهده کنم

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

نتیجه این کار را می توانید ببینید که تمامی مقادیر حفظ شده است.

برای اینکه شما عزیزان دچار سردگمی در هنگام کدنویسی نشوید من فایل های نهایی customer_register.php و server.php را تا این مرحله، در پایین آورده ام.

کدهای پایانی فایل server.php تا این مرحله‎

کدهای پایانی فایل customer_register.php تا این مرحله

خب عزیزان، به انتهای این قسمت آموزش ساخت فروشگاه اینترنتی با استفاده از php رسیدیم. اگر در هر کجای این قسمت دچار ابهام و مشکل بودید، در قسمت نظردهی عنوان کنید تا به آن رسیدگی کنم. سعی کنید با کدزنی و خواندن 2 الی 3 مرتبه این قسمت، درک خود را از کدهای نوشته شده افزایش دهید. در قسمت آینده به کار با جدول داده ایی customers خواهیم پرداخت و این نکته را آموزش می دهم که بعد از دریافت اطلاعات از کاربر باید به چه صورتی این اطلاعات را در پایگاه داده ذخیره کرد. قسمت آینده را از دست ندهید. موفق باشید.

ترتیبی که روکسو برای یادگیری مطالب سری فروشگاه اینترنتی با PHP به شما توصیه می‌کند:
8 نظر
  1. reza
    2+

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

    1. جهانگیر پچکم
      1+

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

  2. سید امیرحسین رضوی
    2+

    سلام، خسته نباشید. آموزش بسیار جذاب و خوبی بود. خیلی ساده و روان یاد دادید. ممنونم ازتون. چرا ادامه آموزش رو نمیذارید؟ ما مشتاقانه منتظر هستیم…

    1. جهانگیر پچکم
      2+

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

  3. reza
    2+

    با سلام و خسته نباشید. این آموزش کلا چند جلسه هست؟

    1. روکسو
      2+

      سلام وقت شما بخیر در حال حاضر این آموزش لاراول ۲۴ جلسه می باشد.

    2. جهانگیر پچکم
      2+

      سلام به شما
      تعداد جلسات آموزش ساخت فروشگاه اینترنتی با PHP احتمالا بیش از ۵۰ جلسه خواهد شد. که انشاالله برای شما دوست عزیز ارائه خواهد شد. ممنونم از حسن توجه شما

    3. جهانگیر پچکم
      2+

      سلام به شما آقا رضای عزیز
      این سری از آموزش ساخت فروشگاه اینترنتی با php به احتمال زیاد بیش از ۵۰ جلسه خواهد شد، که من سعی خواهم کرد به بهترین شکل ممکن برای شما دوست عزیز و سایر عزیزان که اون رو مطالعه می کنند، ارائه بدم. موفق باشی

ارسال نظر

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