کاربرد session

کاربرد session

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

کاربرد session  کاربرد session کاربرد session session

کاربرد session

نکته : session ها برای هر کاربر بصورت مجزا و با یک id خاص ایجاد میشه و مقادیر سشن برای کاربران مختلف سایت مختلف هست .

session ها در یک فایل در مسیر temporary کامپیوتر سرور (بر عکس کوکی) ذخیره میشن . میتونیم بهش مثل کوکی سمت سرور نگاه کنیم .

وقتی یک session شروع یا به اصطلاح start میشه مراحل زیر اتفاق میفتن :

  •  php یک شناسه یکتا بصورت تصادفی که رشته ای از اعداد هگزادسیمال هست ایجاد میکنه .
  • یک کوکی با نام PHPSESSID به کامپیوتر کلاینت ارسال میکنه که حاوی کد شناسه یکتا session هست.
  •  فایل session رو ی کامپیوتر سرور در مسیر temporary ایجاد میشه و سشن ما با شناسه یکتا به همراه یک پیشوند _sess درش ذخیره میشه .
برای بررسی مقدار session ابتدا php مقدار اون رو از روی کوکی ذخیره شده برمیداره و با شناسه مورد نظر روی سرور مقایسه میکنه و بعد ازش استفاده میکنه .

مفهوم session :

هنگامی که شما با یک نرم افزار در محیط ویندوز کار می کنید ، آن را باز کرده و تغییراتی درونش ایجاد نموده و سپس آن را می بندید . به این فرایند یک session یا به بیان فارسی ، جلسه می گویند .
از ابتدای فرایند تا لحظه ای که آن را به اتمام می رسانید ، ویندوز شما را شناخته و می داند که چه کسی هستید .

اما در دنیای وب و اینترنت اوضاع فرق دارد . وب سرور سایتی که در حال بازدید از آن هستید ، نمی داند که شما کی هستید . زیرا آدرس HTTP مرورگر به سرور راجع شما اطلاعاتی نمی دهد . بنابراین تمایز کاربران با یکدیگر غیر ممکن شده و سرور با این وضع برای سرویس دهی به آنها دچار مشکل می شود . بنابراین باید چه کرد ؟ راه حل کجاست ؟
این مشکل در وب و در زبان PHP به وسیله session حل شده است .
سرور سایتی که وارد آن می شوید ، اطلاعات شما مثل username , pass را در متغیرهایی به نام session ذخیره می کند . هر بار که صفحه جدیدی از همان سایت را باز می کنید ، سرور اطلاعات session شما را به همراه درخواست صفحه به مرورگر ارسال کرده و بنابراین دیگر نیازی ندارید در هر صفحه اطلاعات کاربری خود را مجددا وارد نمایید .
این فرایند را تاکنون بارها تجربه کرده و باعث راحتی شما بوده است . اما session چگونه ایجاد و استفاده می شوند .

حوه تعریف session بر روی سرور :

سرور سایت ، در لحظه ورود کاربر به سایت و وارد نمودن اطلاعات کاربری ، یک seesion با یک شناسه خاص ( unique ID – UID ) برای وی ساخته و اطلاعات وی را در آن session ذخیره می کند . این اطلاعات تا زمانی که کاربر در سایت است و یا اعتبار session از بین نرفته ، بر روی سرور ذخیره شده و در مرورگر به صورت کوکی تعریف شده اند .
session ها موقتی هستند و پس از اینکه کاربر سایت را ترک کرد و یا مثلا برای مدتی ، صفحه جدیدی باز نکرد ، از بین می روند . بنابراین در مراجعه بعدی ، در صورت فعال نبودن کوکی برای آن سایت ، باید اطلاعات را مجددا وارد نمایید .
معمولا عمر session را کوتاه تعریف می کنند تا امنیت اطلاعات کاربر بالا برود . تا حالا حتما به چنین موردی برخورد کرده اید . هنگامی که وارد یک سایت شده و اطلاعات خود را وارد نموده اید ، زمانی که صفحه سایت را در مرورگر به صورت باز رها کرده و پس از مدتی دوباره به سایت برگشته اید ، متوجه شده اید که اطلاعات شما از سرور پاک شده و باید مجددا وارد شوند . در این حالت می گوییم session ، منقضی یا expire شده است .

session ها در هنگام خروج از مرورگر از بین میرن یا اینکه در یک دوره زمانی معمولا ۳۰ دقیقه بصورت خودکار منقضی میشن .

برای استفاده از session ها باید در اول فایل php مون متد session_start() رو فراخوانی کنیم . متغییر های نوع session در آرایه ای با نام SESSION_$ ذخیره میشن . اندیس این آرایه درواقع نام session ما خواهد بود .

 

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

مکان قرارگیری فایل موقتی، توسط تنظیمات واقع در php.ini file که session.save_path خوانده می شود، تعیین می گردد. پیش از استفاده کردن از متغیرهای session، حتماً این مسیر را معلوم کرده و راه اندازی کنید.

به محض این که session شروع به کار می کند، اتفاقات زیر رخ می دهد.
  • ابتدا PHP یک شناسه گر {identifier} منحصربه فرد برای آن session معین ایجاد می کند، که از رشته عددی تصادفی هگزا دسیمال مانند ۳c7foj34c3jj973hjkop2fc937e3443 تشکیل شده است.
  • cookie ای به نام PHPSESSID، خودکار به رایانه ی کاربر فرستاده می شود تا رشته شناسایی منحصر به فرد session را ذخیره کند.
  • فایلی به صورت خودکار در دایرکتوری موقت مشخص شده بر روی سِروِر به وجود می آید که اسم شناسه ی منحصر به فرد دارد و پیشوندش sess_ ie sess_3c7foj34c3jj973hjkop2fc937e3443. است.
  • هنگامی که اسکریپتPHP بخواهد مقدار را از session variable بازیابی کند،  PHP به صورت خودکار رشته شناسایی منحصر به فرد session را از PHPSESSID cookie دریافت می کند و سپس در دایرکتوری موقت به دنبال فایلی که آن نام و عنوان را دارد می گردد. فرایند تایید اعتبار، را می توان با مقایسه دو متغیر انجام داد و نتیجه ی آن را به دست آورد.
  • session پس از این که کاربر صفحه را ترک می کند یا مرورگر را می بندد به پایان می رسد. سِرور پس از گذشت زمان مشخص که معمولاً ۳۰ دقیقه است session را خاتمه می دهد.

نحوه تعریف session در PHP :

برای ایجاد session در یک صفحه PHP ، ابتدا باید تابع ( ) session_startup را قبل از تگ < head > در صفحه ، تعریف نمایید . به صورتی که در جدول زیر نمایش داده ایم :

این کد session کاربر را در سرور ثبت کرده ، به شما اجازه می دهد که عملیات session را شروع نموده و یک UID برای شما ایجاد می کند

پس از آماده نمودن مقدمات ، نحوه دستوری مقداردهی و سپس خواندن یک session در PHP را در جدول زیر در قالب یک مثال نمایش داده ایم . این روش روش استاندارد مقدار دهی و خواندن یک session در PHP است .
در مثال زیر یک session به نام views ، ابتدا مقدار دهی شده و سپس در درون صفحه بازخوانی شده است :

از بین بردنPHP session

با تابع session_destroy() می توانید PHP session را تخریب کنید. این تابع هیچ نیازی به آرگومان ندارد و با یک دستور {call} تمامی متغیرهایsession را از بین می برد. اگر بخواهید تنها یک session variable را فسخ کنید می توانید از عملکرد unset()  به منظور غیر فعال کردن session variable استفاده کنید.

در عبارت زیر، یک نمونه unset کردن تک متغیر را به نمایش می گذارد.

دستوری که تمام session variable ها را فسخ می کند در مثال زیر نمایان است.

فعال کردن auto session

اگر شما بتوانید متغیر session. auto_start را در فایل php. ini بر روی ۱ قراردهید و تنظیم کنید، هنگامی که کاربر از سایت بازدید می کند، دیگر شما نیازی به فراخوانی start_session() function ندارید.

session های بدون cookie

در بعضی موارد کاربر ممکن است به cookie اجازه ی ذخیره شدن بر روی سیستم خود را ندهد. بنابراین روش دیگری برای فرستادن session ID به مرورگر وجود دارد یا پی در پی، می توانید از SID ثابت که پس از شروع به کار session، تعریف می شود برای انجام کارتان استفاده کنید. چنانچه کلاینت session cookie مناسبی نفرستد، شکل آن به این صورت خواهد بود session_name=session_id، در غیر این صورت، به رشته ی تهی گسترش می یابد. بدین ترتیب، می توان همیشه بدون قید و شرط  آن را در URL ها گنجاند.

مثال زیر نحوه ی ثبت کردن مقدار و چگونگی درست وصل شدن به صفحه ی دیگری به کمک SID را برای شما نمایش می دهد.

همچنین از() htmlspecialchars برای جلوگیری از حملات ناشی از XSS به هنگام پرینت کردن SID می توان کمک گرفت.

مثال :  کدی طراحی شده است که به وسیله متغیر session به نام views ، تعداد دفعات مشاهده یک صفحه را نمایش می دهد . این دستود ابتدا مقدار این session را بررسی کرده و در صورتی که مقدار دهی نشده باشد ( یعنی کاربر اولین بار وارد صفحه شده است ) ، مقدار آن را برابر با ۱ قرار می دهد . اما اگر از قبل مقدار دهی شده باشد ، یعنی کاربر قبلا به صفحه سر زده است . بنابراین یک واحد به مقدار آن اضافه می کند :

 

آموزش PHP آموزش طراحی وب

دیدگاه خود را بیان کنید