تعیین تاریخ انقضا برای SESSION در php

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

تعیین تاریخ انقضا برای SESSION در php

در مقاله آموزشی تعیین تاریخ انقضا برای SESSION در php ، قصد داریم به شما نحوه تاریخ انقضا دادن به سیشن (Session) و به پایان رساندن SESSION بعد از زمان معلوم را نشان بدیم . این روش بیشتر در سایت های درگاه پرداخت بانک ها ، سیستم های پرداخت آنلاین و دیگر پنل های کاربری استفاده می شود . اهمیت تعیین تاریخ انقضا برای SESSION در php به جهات مختلفی نمایان می شود .

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

اتصال به درگاه بانک ملت php

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

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

اگر قبلا با سیشن ها کار نکردید ، حتما مقاله کار با سیشن ها (آموزش SESSION در php) را بخوانید.

در این آموزش ، ما زمان لاگین کاربر را به صورت timestamp در یک سیشن (SESSION) ذخیره می کنیم . با این مقدار timestamp ما بررسی می کنیم ، اگر مدت زمان سیشن کاربر تمام شد ، کاربر به صورت خودکار ، logout می شود .

ساخت سیستم تعیین تاریخ انقضا برای SESSION در php

کد HTML ساخت سیستم لاگین کاربر

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

برای خواندن آموزش ساخت صفحه لاگین و ثبت نام با php کلیک کنید

ساخت سیشن لاگین کاربر

در این کد ، ما ID یوزر و زمان لاگین را در یک متغییر سراسری سیشن ذخیره می کنیم . بعد ،  یک تابع php برای بررسی زمان انقضای session فراخوانی میکنیم . اگر مدت زمان سیشن به پایان نرسیده بود به صفحه پنل مدیریت هدایت میکنیم در غیر اینصورت کاربر را به صفحه logout.php و در نهایت لاگین مجدد هدایت (ریدایرکت | redirect )می کنید.

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

آموزش ریدایرکت (Redirect) با php

ساخت تابع سفارشی PHP برای بررسی زمان انقضای SESSION

این تابع در اول تمام صفحاتی که نیاز به احراز هویت می باشد ، فراخوانی خواهد شد . این تابع php مقدار TRUE را برمی گرداند ، اگر تاریخ انقضا برای SESSION کاربر به اتمام برسد ، در غیر اینصورت مقدار FALSE را بازگشت می دهد .

خروج (logout) کاربر بعد از اتمام تاریخ انقضای SESSION

صفحه logout.php سیشن کاربر لاگین شده را را منقضی (با اجرای تابع unset) میکند و همچنین وضعیت فلگ session_expired را چک میکند که اگر ست شده باشد ، پیام به اتمام رسیدن تاریخ انتقضا را به کاربر نمایش می دهد .

دید به چه راحتی تاریخ انقضا برای SESSION در php را ست کردیم . هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

برای دانلود سورس کد تعیین تاریخ انقضا برای SESSION در php از قسمت زیر اقدام کنید

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

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

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

  1. محمد ۱۷ مهر ۱۳۹۸

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

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

      سلام. خیر باید از اول خرید کنید

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

        خیلی ممنون

        پاسخ
  2. ماتادور ۶ فروردین ۱۳۹۷

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

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

      سلام ممنونم .
      خیر نیاز نیست که این مورد رو قرار بدید . بیشتر برای دسترسی های حساس پنل کاربری که امکان سو استفاده با دسترسی فیزیکی هستش , از تاریخ انقضا می تونید بهره ببرید. در غیر اینصورت راهکار های ارایه شده در مقاله آموزش امنیت session در php کفایت می کند.

      موفق باشید

      پاسخ
  3. mesi ۷ مهر ۱۳۹۶

    عالی بود ممنون.

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

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

      پاسخ
  4. ایمان ۷ مهر ۱۳۹۶

    سلام
    یه سوال برام پیش اومده.
    چرا به جای unset از session_destroy(); استفاده نکردید؟
    و مزایاش چیه.
    اگه در مورد امنیت در سشن هم یک مطلب بزارید ممنون میشم.
    یک سوال دیگه.
    توی هدر دستور session_start(); نوشتم ، توی لوکال مشکلی نیست ولی توی هاست ارور زیرو میده.
    اینم راهنمایی کنید ممنونم.
    session_start(): Cannot send session cache limiter – headers already sent
    بازم ممنون.

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

      سلام . با تابع unset می تونیم بک سیشن خاص رو حذف کنیم مثلا اگر دو سیشن login و expire ست شده باشند با تابع unset یکی از آنها را می تونیم حذف کنیم ولی تابع session_destroy() تمام سیشن های ست شده را حذف میکند .
      در صفحاتی که به هر طریقی از متغییر $_SESSION استفاده می کنید ، حتما و حتما انجین session_start() را در اولین خط استارت کنید و قبلش هیچ کد html حتی echo یک کاراکتر هم وجود نداشته باشد . در لوکال هاست به علت فعال بودن output buffering این مشکل وجود نداره ولی در سرور واقعی این قابلیت به طور پیش فرض از تنظیمات php.ini فعال نیست و برای مواجه نشدن با این ارور معروف headers already sent در خطوط اول هر فایلی که از سیشن استفاده میشه تابع ob_start() رو فراخوانی کنید .
      دلیل ارور headers already sent هم این است که درخواستی که به سمت سرور ارسال می شود اگر از قبل قابلیت استفاده از سیشن در http header اضافه نشود در درخواست های بعدی که از سمت شما ارسال می شود در کار با توابع و متغییر های سراسری که با سیشن در ارتباط هستند به مشکل بر میخورند .

      برای آشنایی با انواع خطاها در php و نحوه رفع آن و ریدارکت با php کلیک کنید

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

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

      سلام . مقاله افزایش امنیت SESSION در php در سایت قرار گرفت . موفق باشید .

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