ساخت سیستم بازیابی رمزعبور در php

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

ساخت سیستم بازیابی رمزعبور در php

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

در این آموزش ، به شما مراحل ساخت سیستم بازیابی رمزعبور در php توسط ایمیل را نشان می دهیم.

 

لیست فایل هایی که در پروسه بازیابی رمزعبور در php استفاده شده را می بینید:

  • User.php – مدیریت اتصال به دیتابیس
  • userAccount.php – مدیریت فراموشی رمزعبور ، بازیابی رمزعبور و ارسال ایمیل
  • index.php –  نمایش فرم ورود کاربران + لینک فراموشی پسورد
  • forgotPassword.php – نمایش فرم فراموشی رمز عبور
  • resetPassword.php – نمایش فرم بازیابی رمزعبور
  • style.css – استایل دهی به فرم ورود ، فراموشی و بازیابی رمز عبور

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

ساخت جدول مربوط به کاربران

برای ذخیره سازی اطلاعات کاربران ، شما باید از قبل یک جدول users در دیتابیس mysql داشته باشید. حالا یک ستون به اسم  forgot_pass_identity به جدول users اضافه می کنیم.

ساختار کلی جدول users به اینصورت خواهد بود :

 

کلاس User (user.php)

کلاس User تمام عملیات مربوط به دیتابیس mysql مثل get , insert , update اطلاعات کاربران را برعهده دارد . متد update() در این کلاس برای ساخت کد تشخیص هویت برای فراموشی رمزعبور استفاده می شود.

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

userAccount.php

این فایل ، ثبت نام ، لاگین ، خروج (logout) ، درخواست فراموشی و بازیابی رمز عبور را برعهده دارد. همچنین قابلیت ارسال لینک بازیابی رمز عبور در php توسط ایمیل را دارد.

نکته : فراموش نکنید که محتویات ایمیل ، آدرس from و لینک وبسایت را در متغییر $resetPassLink داخل پروژه خود تغییر بدید.

 

فرم لاگین همراه با لینک فراموشی رمزعبور (index.php)

فرم فراموشی رمزعبور (forgotPassword.php)

یک فرم برای دریافت ایمیل از کاربر برای شناسایی اکانت کاربر ایجاد شده است .

 

فرم بازیابی رمزعبور (resetPassword.php)

این فرم زمانی که کاربر بر روی لینک بازیابی رمزعبور کلیک میکند ، نمایش داده می شود . فرم نمایشی برای تغییر رمزعبور که اطلاعات ورودی را به صفحه userAccount.php توسط درخواست resetSubmit ارسال میکند

 

کد CSS (style.css)

جمع بندی

امیدوارم آموزش “ساخت سیستم بازیابی رمزعبور در php” برای توسعه صفحه لاگین کاربران شما مفید بوده باشد. اگر از قبل صفحه لاگین را ساخته اید کافیست این کد ها را به پروژه خود در صورت عدم تداخل متغییر ها اضافه و به راحتی استفاده کنید.

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

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

موفق و پیروز باشید

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

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

  1. زهرا ۵ مرداد ۱۴۰۰

    سلام روزتون بخیر در قسمت user.php در ابتدای اتصال به دیتابیس از متعیر this استفاده کردین و بعد از این خط دستور استفاده کردین. میشه بگین دقیقا این ۲ چه کاری انجام میدن و برای چی هستن؟ این علامت چیه؟dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);

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

      سلام. این کد بصورت oop یا شی گرایی نوشته شده.
      زمانی که شما یک آبجکت از اون کلاس رو میساری اطلاعات دیتابیس رو بهش میدید و داخل متغیرهای کلاس ذخیره میشه و بعد هر متدی از کلاس برای مثلا دستورات sql اجرا می کنید با اون اطلاعات به دیتابیس متصل شده و دستور رو انجام میده

      پاسخ
  2. Nazanim ۱۷ تیر ۱۴۰۰

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

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

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

      پاسخ
      1. نازنین ۲۵ تیر ۱۴۰۰

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

        پاسخ
  3. Hanieh ۱۰ تیر ۱۴۰۰

    قسمت بازیابی رمز عبور من ارور میده
    Undefined index:fp_code in c:wamp/resetpassword.php on line 28 call stack #time memory
    Location function
    برای چیه این اررور؟میشه لطفا جواب بدین؟

    پاسخ
  4. Hanieh ۱۰ تیر ۱۴۰۰

    سلام ببخشید قسمت forgot password برای من کار نمیکنه. چیکار باید بکنم؟

    پاسخ
  5. Nazi ۹ تیر ۱۴۰۰

    سلام خسته نباشید. من تمامی قسمت های فایلو انجام دادم. قسمت بازیابی رمز عبور از همون لحظه ای که میخوام ایمیل رو وارد کنم ارور میده
    Some problem occurred’ ple….
    بنظر شما مشکل از کجاست؟؟ ایمیلی که میدم معتبره داخل دیتابیس هست و باهاش حساب دارم

    پاسخ
  6. نازنین ۲۱ خرداد ۱۴۰۰

    ببخشید یه سوال دیگ داشتم. موقع لاگین شدن از لاین ۶۴ user.php اررور میگیره. این اررور چه زمانی رخ میده؟

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

      ورژن php رو روی ۷٫۳ یا ۵٫۶ قرار بدید

      پاسخ
  7. نازنین ۲۱ خرداد ۱۴۰۰

    سلام وقتتوم بخیر. مرسی از سایت خوبتون. من متوجه نشدم که قسمت متغیر update رو باید چیکار کنم. لینک netpparadis رو به چه لینکی تغییر بدم؟؟

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

      سلام. ممنون.
      به آدرس سایت خودتون یا جایی که اسکریپت رو دارید تغییر بدید

      پاسخ
  8. faezeh ۲۰ خرداد ۱۴۰۰

    سلام، من در مورد کلاس های آموزش PHP سوال داشتم چجوری میشه ارتباط گرفت واسه پرسیدن سوال و ثبت نام

    پاسخ
  9. ahmad ۱۶ فروردین ۱۴۰۰

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

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

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

      پاسخ
  10. احمد ۷ دی ۱۳۹۹

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

    پاسخ
  11. Ariya ۲۴ خرداد ۱۳۹۹

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

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

      سلام.
      کویری ساخت جداول در اوایل پست بالا در بخش ساخت جدول مربوط به کاربران موجود است.

      پاسخ
  12. Ariya ۲۳ خرداد ۱۳۹۹

    Some problem occurred, please try again.

    با سلام

    این ارور برای چی در قسمت register میاد👆👆👆

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

      سلام.
      مشکلی در اتصال به دیتابیس یا قرار دادن داده ها دخل دیتابیس (کویری update) هست که ممکنه جداول رو نساختید یا مورد مشابه پیش اومده

      پاسخ
  13. زهرا ۲۹ اسفند ۱۳۹۸

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

    پاسخ
    1. حسن شفیعی ۲۹ اسفند ۱۳۹۸

      سلام.
      این یک مشکل در کد نیست فقط ما این قابلیت رو بهش اضافه نکردیم که بنابر نیاز خود می توانید داده را از دیتابیس حذف کنید
      در فایل userAccount.php خط ۸۹ یک کویری sql برای DELETE کردن سطر مربوطه از دیتابیس اضافه کنید تا حذف بشه.
      موفق باشید.

      پاسخ
  14. محمد ۱۷ خرداد ۱۳۹۸

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

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

      در کویری sql مربوط به ثبت نام که بصورت insert into هست اینجا forgot_pass_identity را مثلا مقدار ۰ یا هرچیزی یزارید یا اینکه داخل دیتابیس این ستون را گزینه null رو تیک بزنید و اعمال کنید تا مشکل حل بشه.
      موفق باشید.

      پاسخ
      1. محمد ۱۸ خرداد ۱۳۹۸

        مرسی درست شد.مشکل دومم اینه من با wamp دارم رو سایت کار میکنم و host و domain ندارم هنوز
        الان به جای ‘http://Netparadis.com/resetPassword.php?fp_code=’ چی بذارم؟

        پاسخ
      2. حسن شفیعی ۱۸ خرداد ۱۳۹۸

        اگر روی لوکال هاست هست به جای http://Netparadis.com از http://localhost استفاده کنید.

        پاسخ
      3. محمد ۱۹ خرداد ۱۳۹۸

        این رو هم آخرش اضافه کنم یا نمیخواد؟ resetPassword.php?fp_code

        پاسخ
      4. حسن شفیعی ۱۹ خرداد ۱۳۹۸

        خب طبیعتا باید اضافه بشه

        پاسخ
  15. محمد ۱۷ خرداد ۱۳۹۸

    سلام خسته نباشین.خط ۸ فایل user account ارور میده ارورش هم اینه ممنون میشم کمکم کنید
    Fatal error: Uncaught Error: Call to a member function getRows() on null in E:\game\www\reg7\userAccount.php on line 8

    پاسخ
    1. حسن شفیعی ۱۷ خرداد ۱۳۹۸

      سلام. ممنون. کویری شما مشکل دار هست احتمالا به خاطر اتصال دیتابس یا نبودن جداول است که برای همین این خطا مشاهده میشه. که در اینحا $user خالی یا کویریش به درستی اجرا نشده ینی کاربری تشخصی داده نشده

      پاسخ
      1. محمد ۱۷ خرداد ۱۳۹۸

        ممنون از پاسخگویی.روش کار میکنم ببینم چی میشه

        پاسخ
  16. احمدرضا ۱۹ فروردین ۱۳۹۸

    سلام;
    Please check your e-mail, we have sent a password reset link to your registered email.

    پیام داده منتهی ایمیل نیومده. میخواستم بدونم از لوکال هاست هم ایمیل میاد یا باید به هاست اصلی وصل کنم؟

    پاسخ
    1. حسن شفیعی ۱۹ فروردین ۱۳۹۸

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

      پاسخ
      1. احمدرضا ۲۰ فروردین ۱۳۹۸

        سلام
        ممنون توی هاست درست شده.
        یه قسمت فقط مورد داره صفحه forgotPassword.php ایمیل میزنم لینک تغییر پسورد ارسال میشه و سالمه و پسورد جدید هم توی تیبل ذخیره می کنه منتهی خود صفحه forgotPassword.php رفرش میشه و ارور ۴۰۴ میاره.

        پاسخ
      2. حسن شفیعی ۲۰ فروردین ۱۳۹۸

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

        در فایل userAccount.php و خط ۲۳ باید آدرس دامنه خود را تغییر بدید

        $resetPassLink = 'http://Netparadis.com/resetPassword.php?fp_code='.$uniqidStr;

        به جای http://Netparadis.com باید آدرس دامنه به همراه فولدر اسکریپت را به درستی آدرس دهی کنید تا لینک معتبر به ایمیل ارسال بشه.

        موفق باشید.

        پاسخ
      3. احمدرضا ۲۰ فروردین ۱۳۹۸

        ممنون اون قسمت درسته اینجا رو ببینید:
        http://hideveloper.ir/Dashboard/forgotPassword.php
        ثبت نام کنید و بعد خارج بشین و همین صفحه بازیابی رو بزنین.
        برای راحتی کار ایمیل که قبلا ثبت نام شده رو چک کنین
        ممنون

        پاسخ
      4. حسن شفیعی ۲۰ فروردین ۱۳۹۸

        مسله فقط کوچک و بزرگ بودن حروف (F) است که یا در سورس و یا خود فایل اسم فایل رو تغییر بدید
        forgotPassword یا ForgotPassword

        پاسخ
      5. احمدرضا ۲۱ فروردین ۱۳۹۸

        خیلی ممنون خود فایل کوچیک کردم ♥

        پاسخ
  17. m_f73 ۳ آبان ۱۳۹۷

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

    پاسخ
    1. حسن شفیعی ۳ آبان ۱۳۹۷

      سلام. ممنونم . اگر با PHP مقدماتی و همچنین شی گرایی آشنا باشید با کمی مطالعه و تست کدها به هیچ وجهی مشکلی با توابع و نحوه کارکرد آنها نخواهید داشت و همانطور که گفته شد نیاز است که OOP را بلد باشید.
      این سیستم بازیابی رمزعبور بر روی سیستم لاگین و ثبت نامی که در لینک زیر آموزش دادیم سوار است که در واقع کدها همان کد آموزش زیر است و فقط بخش کوچکی بهش اضافه شده.
      https://netparadis.com/registration-and-login-system-php/
      به هر حال اگر آموزش بالا رو مطالعه کنید مطمینا توابع جدیدی که به این آموزش اضافه شده است زیاد هم سخت و پیچیده نخواهد بود و به راحتی می تونید منطق کدها رو درک کنید.

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

      موفق باشید.

      پاسخ
  18. سجاد اشوب ۱ شهریور ۱۳۹۷

    سلام
    وقتی forgot password را میزنم و ایمیل را مینویسم ایمیلی برایم ارسال نمیشود.
    در قسمتی هم که اشاره کرده بودید لینک را تغییر دادم

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

      سلام. به جای تابع mail میتونید از کتابخانه PHPMailer استفاده کنید.
      https://netparadis.com/send-email-php/
      همچنین اگر ایمیلی ارسال نشد ممکن است مشکل از میل سرور باشه که بهتره روی لوکال هاست تست نکنید و روی هاست هم تضمینی برای ایمیل های ارسال شده با تابع mail نیست.

      موفق باشید.

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