انتقال متغیر با Session در php (آموزش Session in php)

در این جلسه تیم کدگیت قصد دارد شما را با روش انتقال متغیر به کمک Session در php آشنا سازد پس در این آموزش ما را همرایی کنید.

گاهی لازم است که شما یکسری داده را به شکل متغیر از یک صفحه php به صفحه ای دیگر انتقال دهید برای این کار شما می توانید به کمک روش های زیر یک متغیر را از یک صفحه php به صفحه دیگر انتقال دهید:

  •  انتقال متغیر با URL
  • انتقال متغیر با Post و Get
  •  انتقال متغیر به وسیله Session
  • انتقال متغیر به وسیله Cookie
  • انتقال متغیر به وسیله فرم های HTML

در این قسمت قصد آموزش انتقال متغیر با Session را به شما عزیزان داریم و در قسمت های آینده به سایر بخش ها نیز خواهیم پرداخت.

Session در php

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

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

به محض این که session شروع به کار می کند، اتفاقات زیر رخ می دهد:

  1. ابتدا PHP یکID برای آن session معین ایجاد می کند، که از رشته عددی تصادفی هگزا دسیمال  تشکیل شده است.(مثلا 3c7foj34c3jj973hjkop2fc937e3443 )
  2. یک کوکی به نام PHPSESSID، خودکار به رایانه ی کاربر فرستاده می شود تا رشته تا رشته ID تشکیل شده در مرحله قبل را روی کامپیوتر کاربر (client) ذخیره کند.
  3. فایلی به صورت خودکار در دایرکتوری موقت مشخص شده بر روی سِروِر به وجود می آید که با ID ایجاد شده را همراه با پیشوند” _sess” نام گذاری می شود.(مثلا sess_3c7foj34c3jj973hjkop2fc937e3443 )

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

session ایجاد شده پس از این که کاربر صفحه را ترک کرد یا آنکه مرورگر را ببندد، به پایان می رسد ولی سِرور پس از گذشت زمان مشخص که معمولاً 30دقیقه است session را خاتمه می دهد البته این موضوع به تنظمات سرور بستگی دارد.

ایجاد Session در php

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

متغیرهایsession  در آرایه شرکت پذیری به نام [“نام متغیر”]SESSION_$  ذخیره می شوند. این متغیرها در تمام طول حیات یک session قابل استفاده و دسترسی می باشند.

مثال زیر یک session را راه اندازی کرده وسپس یک متغیر به اسم counter را ثبت می کند که هر بار از صفحه بازدید می کنید، به مقدار آن یک عدد اضافه می شود.

برای اینکه بفهمید آیا متغیر انتخابی ما در آرایه  session موجود است یا خیر، از تابع isset استفاده کنید.

کد زیر را داخل فایل sessionTest.php قرار داده، سپس برای دیدن نتایج بارها و بارها این فایل را load کنید.

از بین بردن session

با تابع session_destroy می توانید تمام session های ایجاد شد را به طور کجا پاک نمود. این تابع هیچ نیازی به آرگومان  ندارد و با فراخوانی آن تمامی متغیرهای session  را از بین می برد. اگر بخواهید تنها یک متغیر در session  را حذف کنید می توانید از تابع unset  به منظور حذف کردن همان Session از آرایه مربوط به session ها استفاده کنید.

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

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

session های بدون cookie

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

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

تابع htmlspecialchars

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

در اینجا به پایان مبحث آموزش  انتقال متغیر با Session در php می رسیم امیدواری مطلب را به شما عزیزان خوب انتقال داده باشیم.

پسورد: www.codegate.ir

دسته : php

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz