PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مفهوم session در php



CodeBox
October 12th, 2019, 12:57
(https://redup.ir/viewer/5993_blog_wl79.png) https://redup.ir/img.php?image=4437_blog_daqy.png (https://redup.ir/)


SESSION راهی است که از آن طریق می توان یکسری داده های خاص را زمانیکه از یک صفحه سایت به صفحه دیگری می رویم انتقال داده و به عبارتی به خاطر آورد. به عبارت دیگر، فرض کنیم در سایتی ثبت نام کرده ایم و با استفاده از نام کاربری و رمز عبور خود وارد ناحیه کاربری می شویم. پس از ورود به ناحیه کاربری، اگر به صفحات مختلف رجوع کنیم، سایت مد نظر نام کاربری و رمز عبور ما را به خاطر خواهد آورد که این کار بدون استفاده از مفهوم SESSION در زبان برنامه نویسی PHP امکان پذیر نمی باشد.
تفاوت عمده ای که مابین کوکی و سِشِن وجود دارد این است که کوکی ها اطلاعات مورد نیاز خود را روی سیستم کاربر ذخیره می سازند (لذا خیلی ایمن نیستند) اما این در حالی است که سِشِن ها داده های مد نظر خود را روی سرور ذخیره می سازند. از آنجا که سِشِن ها داده های خود را سمت سرور ذخیره می کنند، دارای یکسری مزیت نسبت به کوکی ها می باشند که عبارتند از:
SESSION ها به مراتب ایمن تر هستند چرا که نیازی ندارند تا دائماً دادها را مابین سرور و کلاینت رد و بدل کنند.
SESSION ها این امکان را به شما می دهند تا اطلاعات بیشتری را نسبت به کوکی ها ذخیره سازید و بعداً از آنها استفاده نمایید.
کوکی ها برای آنکه مورد استفاده قرار گیرند می بایست توسط کاربر تایید شوند اما SESSION ها نیازی به تایید کاربران ندارند.
درست است که SESSION ها به مراتب کاربردی تر از کوکی ها هستند، اما جاهایی در برنامه نویسی پی اچ پی وجود دارد که استفاده از کوکی ها منطقی تر است که عبارتند از:
استفاده و فراخوانی کوکی ها در کل آسانتر است.
به طور کلی، منابع سمت سرور کمتری استفاده می کند.
ماندگاری آنها در طول زمان بیشتر است.


به طور خلاصه، بایستی گفت زمانی می بایست از کوکی ها استفاده کرد که خیلی نیازی به امنیت نداشته باشیم و بخواهیم حجم داده های اندکی را ذخیره سازیم.
ساز و کار سِشِن به این صورت است که وقتی یکی از آنها را ایجاد می کنیم، یک Session ID به صورت تصادفی ایجاد شده (یک شماره تصادفی ایجاد می گردد) و در یک فایل متنی که روی سرور قرار گرفته است ذخیره می گردد و این در حالی است که هر کاربری Session ID مخصوص به خود را خواهد داشت.
برای روشن شدن این مسئله مثالی می زنیم. فرض کنیم که در سایتی ثبت نام کرده ایم و با استفاده از نام کاربری و رمز عبور خود وارد ناحیه کاربری می شویم. به محض ورود به ناحیه کاربری، روی سرور یک Session ID برای ما ایجاد شده و به صورت پیش فرض در قالب یک کوکی برای مرورگر ما ارسال می شود. از این پس، مرورگر از آن کوکی برای دریافت اطلاعات پنل کاربری ما استفاده خواهد کرد تا زمانیکه آن کوکی حذف گردد.

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



ابتدا PHP یک شناسه گر {identifier} منحصربه فرد برای آن session معین ایجاد می کند، که از رشته عددی تصادفی هگزا دسیمال مانند ۳c۷foj۳۴c۳jj۹۷۳hjkop۲fc۹۳۷e۳۴۴۳ تشکیل شده است.

cookie ای به نام PHPSESSID، خودکار به رایانه ی کاربر فرستاده می شود تا رشته شناسایی منحصر به فرد session را ذخیره کند.

فایلی به صورت خودکار در دایرکتوری موقت مشخص شده بر روی سِروِر به وجود می آید که اسم شناسه ی منحصر به فرد دارد و
پیشوندش sess_ ie sess_۳c۷foj۳۴c۳jj۹۷۳hjkop۲fc۹۳۷e۳۴۴ ۳. است.


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

session پس از این که کاربر صفحه را ترک می کند یا مرورگر را می بندد به پایان می رسد. سِرور پس از گذشت زمان مشخص session را خاتمه می دهد.

*مکان قرارگیری فایل موقتی SESSION، توسط تنظیمات واقع در php.ini file که session.save_path خوانده می شود، تعیین می گردد.*