افزودن مرا به خاطر بسپار به فرم لاگین در php

  • آپدیت شده در تاریخ

مرا به خاطر بسپار در php

در صفحه ورود کاربران , قابلیت “مرا به خاطر بسپار ” – Remember me برای ذخیره کردن اطلاعات نام کاربری و رمز عبور کاربر در مرورگر می شود و در زمان لاگین شدن دوباره می تواند جالب و کاربردی باشد . این کار باعث می گردد که کاربر از وارد کردن دوباره اطلاعات ورود در هربار لاگین جلوگیری کند .

در این مقاله قصد داریم یک فرم لاگین با قابلیت مرا به خاطر بسپار در php ایجاد کنیم . در این مثال , ما از کوکی ها در php استفاده میکنیم.

فرم لاگین PHP

این کدها یک فرم لاگین با کدهای php برای پر کردن اطلاعات از قبل ذخیره شده نشان می دهد . این فرم یک چک باکس برای remember me هم دارد . اگر این چک باکس تیک زده شده باشد بعد از وارد کردن اطلاعات و زدن دکمه login اطلاعات برای دفعه های بعد ذخیره خواهد شد.

در اول صفحه ما بررسی می کنیم که آیا متغییر session یا cookie ست شده است یا نه  . اگر هر کدام از آنها ست شده باشد ، کاربر به مستقیما به صفحه home.php هدایت می کنیم

برای آشنایی با ریدایرکت با php کلیک کنید

فایل login.php

اول از همه ما id کاربر را با تطبیق اطلاعات کاربر در دیتابیس ، بدست می آوریم . بعد اگر مقدار چک باکس ” مرا به خاطر بسپار ” تیک خورده باشد ، یک کوکی به اسم user با مقدار id ای که از دیتابیس fetch شده است می سازیم . همچنین می توانیم یک تاریخ یا زمان را برای تاریخ انقضای کوکی در نظر بگیریم . اما این مورد اختیاری است . اگر هیچ تاریخ انقضایی بری cookie در نظر نگیرید ، کاربر برای همیشه (forever) لاگین خواهد ماند مگر آنکه دستی کوکی ها را حذف کند یا logout کند

اگر چک باکس ” مرا به خاطر بسپار ” تیک نخورده باشد ، یک session با اسم user ومقدار id ست می کنیم.

در نهایت ، کاربر را به صفحه پروفایل کاربری یا هر صفحه دیگر هدایت می کنیم . در اینجا به home.php ریدایرکت خواهد شد.

فایل home.php

در اول ، ما چک می کنیم که آیا کوکی یا سیشن ست شده است یا نه ، اگر بله ، در اینصورت از id کاربر را برای دریافت و نمایش اطلاعات پروفایل از دیتابیس ، استفاده می کنیم

نکته : دقت کنید قبل از استفاده مستقیم از id ذخیره شده کوکی کاربر در کوئری sql آن را با تابع intval() به مقدار عددی تبدیل کنید تا هرگونه داده مخرب از متغیر ، sanitize یا همان پاکسازی شود.

همچنین یک صفحه logout داریم که کاربر با باز کردن آن ، تمام اطلاعات سیشن و کوکی کاربر حذف خواهد شد.

برای آشنایی با نحوه کار با کوکی ها در php و استفاده از SESSION کلیک کنید

فایل logout.php

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

اگر همه چی با موفقیت انجام شود ، ما به صفحه index.php ریدایرکت خواهیم شد .

افزودن مرا به خاطر بسپار در php یکی از موارد کاربردی در طراحی صفحه لاگین کاربران بود که در سایت های فروشگاهی بخصوص بسیار کارامد و مفید است . امیدوارم در پروژه هایی که می نویسید استفاده لازم را از این کد ها ببرید .

موفق باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۰)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. مریم ۹ مرداد ۱۴۰۱

    مرا به خاطر بسپار تیکی هست که ما رو از زدن یوزر پسورد بی نیاز میکنه
    شما اموزش سشنی رو دادید که تنظیم کنه کاربر چقدر توی حالت login بمونه
    تیک remember me چیز دیگه است درسته؟!
    یا من متوجه نشدم!

    پاسخ
    1. حسن شفیعی ۱۰ مرداد ۱۴۰۱

      این تیک برای اینه که کاربر در حالت بیشتری تو لاگین بمونه

      پاسخ
  2. دانیال نورانی ۲ تیر ۱۴۰۰

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

    پاسخ
  3. محمود رنجبر ۱ تیر ۱۴۰۰

    سلام مهندس شفیعی عزیز
    یه سوال فنی میشه کاری کرد که دو کاربر که از یک موبایل و یک مرور گر استفاده میکنند رو تشخیص داد و بدون زدن پسورد لاگین بشن چنین کاری شدنی هست
    راهنمایی بفرمائید

    پاسخ
  4. محمود رنجبر ۳۱ خرداد ۱۴۰۰

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

    پاسخ
    1. حسن شفیعی ۳۱ خرداد ۱۴۰۰

      سلام. خیر باید طبق کدها و بر اساس کد قبلی ثبت نام و ورود کاربران بهش اضافه کنید

      پاسخ
  5. محمود رنجبر نورآبادی ۱۱ مهر ۱۳۹۹

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

    پاسخ
    1. حسن شفیعی ۱۱ مهر ۱۳۹۹

      سلام. ممنون.
      بله حتما و امیدوارم هر روز, بهتر و ثبات قدم تر برای انتشار محتوای آموزشی در کنار مخاطبان عزیز باشیم.

      موفق و موید باشید.

      پاسخ
  6. مهیار ۱۱ مهر ۱۳۹۶

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

    پاسخ
    1. حسن شفیعی ۱۱ مهر ۱۳۹۶

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

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

      خیلی ممنونم . موفق باشید .

      پاسخ
دوره های آموزشی