سشن در پی اچ پی

سشن در php، روش استفاده و همه نکات کاربردی (به زبان ساده)

اساطیر زبان

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

باید مسیر این فایل را با استفاده از تنظیم session.save_path در فایل php.ini مشخص کنید. اگر مسیر آن را تعیین نکنید، ممکنه سشن خراب شود.

 


پی اچ پی

توی این پک فوق العاده، PHP رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با PHP وبسایت بساز، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

استفاده از سشن در PHP

یک سشن در PHP این امکان را برای سرور فراهم می کند تا اطلاعات مربوط به زمان راه اندازی وب سایت، کارهای انجام شده، زمان بستن وب سایت و سایر اطلاعات مربوطه را به دست آورد. این یک مورد ضروری است زیرا برخلاف کامپیوتر یا تلفن همراه، وب سرور هیچ اطلاعاتی درباره کاربر ندارد. اینجاست که سشن ها بهکار می آیند.

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

وقتی یک سشن را در PHP شروع می کنید چه اتفاقی می افتد؟

با شروع یک سشن موارد زیر رخ می دهد: Stand Out From Your Peers this Appraisal Season

  • یک عدد 32 رقمی هگزا دسیمال تصادفی به عنوان شناسه برای این سشن خاص ایجاد می شود. مقدار شناسه چیزی شبیه 4af5ac6val45rf2d5vre58sd648ce5f7 می باشد.
  • یک کوکی به نام PHPSESSID را به سیستم کاربر ارسال می کند. کوکی PHPSESSID شناسه منحصر به فرد سشن را ذخیره می کند.
  • یک فایل موقت روی سرور ایجاد شده و در یک مسیر مشخص ذخیره می شود. نام این فایل مقدار شناسه هگزادسیمال با پیشوند sess_ است. بنابراین در مثال بالا در فایلی به نام sess_4af5ac6val45rf2d5vre58sd648ce5f7 نگه داشته می شود.

PHP به کوکی PHPSESSID دسترسی پیدا کرده و شناسه منحصر به فرد را برای دسترسی به مقادیر متغیرهای سشن دریافت می کند. سپس فایل موردنظر را با آن رشته در دایرکتوری خود جستجو می کند.

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

راه اندازی یک سشن در PHP

با استفاده از تابع ()session_start می توانید یک سشن را در PHP شروع و راه اندازی کنید. این تابع به طور پیشفرض ابتدا بررسی می کند که آیا سشن وجود دارد یا نه. اگر یک سشن از قبل وجود داشته باشد هیچ کاری انجام نمی دهد اما در غیر اینصورت یکی ایجاد می کند.

برای تنظیم متغیرهای سشن می توانید از آرایه سراسری

$_SESSION[]

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

حالا که با سشن و نحوه شروع آن در PHP آشنا شدید، با یک مثال عملکرد آن را توضیح می دهیم.

نکته: همیشه توصیه می شود که تابع ()session_start را به عنوان اولین خط در کد خود قرار دهید، حتی قبل از تگ های HTML.

مثال

در مثال زیر یک سشن برای محاسبه تعداد دفعات بازدید از صفحه وب ابجاد می کنیم. برای این کار یک متغیر سشن به نام counter تعریف شده است.

<?php

   session_start();

   if( isset( $_SESSION[‘counter’] ) ) {

      $_SESSION[‘counter’] += 1;

   }else {

      $_SESSION[‘counter’] = 1;

   }

   $my_Msg = “This page is visited “.  $_SESSION[‘counter’];

   $my_Msg .= ” time during this session.”;

?>

<html>

   <head>

      <title>Starting a PHP session</title>

   </head>

   <body>

      <?php  echo ( $my_Msg ); ?>

   </body>

</html>

خروجی

SessioninPHP_1

می توانید این کد را در یک فایل مثل a.php کپی کرده و چندین بار بارگذاری کنید تا عدد متغیر counter را پس از هر بارگذاری صفحه مشاهده کنید.

دسترسی مقادیر سشن در PHP

با استفاده از متغیر سراسری $_SESSION می توانید به مقدار متغیر سشن دسترسی پیدا کنید. در مثال زیر یک متغیر سشن برای ذخیره سازی نام ایجاد شده است.

<?php

    session_start();

?>

<html>

<body>

<?php

    $_SESSION[“name”] = “Simplilearn”;

    echo “Information set in a variable.<br/>”;

?>

</body>

</html>

خروجی

SessioninPHP_2

متغیر از یک فایل دیگر نیز قابل دسترسی است. یک فایل دیگر ایجاد کنید و کد زیر را برای دسترسی به متغیر وارد کنید.

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

<?php

    session_start();

?>

<html>

<body>

<?php

    echo “User is: “.$_SESSION[“name”];

?>

</body>

</html>

خروجی

SessioninPHP_3

از بین بردن یک سشن در PHP

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

  • ()session_destroy: با فراخوانی این تابع همه متغیرهای سشن حذف می شوند.
  • ()unset: با فراخوانی این تابع فقط متغیر سشن مشخص شده از بین می رود.

علاوه بر این با استفاده از تابع ()session_unset می توانید همه متغیرهای یک سشن را حذف کنید.

کد زیر برای از بین بردن متغیر counter ساخته شده در مثال بالا نوشته شده است. در اینجا از تابع ()unset برای حذف متغیر سشن استفاده شده است.

<?php

    unset($_SESSION[‘counter’]);

?>

فقط متغیرcounter خاتمه می یابد اما روی متغیرهای دیگر (در صورت وجود) تاثیری ندارد.

در مثال زیر از ()session_destroy برای از بین بردن یک سشن به طور کامل در PHP استفاده شده است.

<?php

    session_destroy();

?>

تابع ()session_destroy هیچ پارامتر ورودی را نمی پذیرد. فقط با فراخوانی این تابع کل سشن در PHP حذف می شود.

آموزش ajax در php (به زبان ساده)

فعال کردن سشن خودکار

لازم نیست هر بار که کاربر از وب سایت بازدید می کند، تابع ()start_session را فراخوانی کنید. در عوض می توانید سشن خودکار (Auto Session) را برای آن فعال کنید. سشن خودکار برای هر بازدید یک سشن به طور اتوماتیک ایجاد می کند.

برای فعال کردن سشن خودکار باید به فایل php.ini دسترسی پیدا کرده و متغیر session.auto_start را روی 1 تنظیم کنید.

ارسال سشن ها بدون کوکی

حتما تا به حال درخواست وب سایت ها را برای استفاده از کوکی ها دیده اید، دو گزینه دارید: پذیرفتن یا رد کردن. کاربر به سادگی می تواند استفاده و ذخیره کوکی ها را در مرورگر خود محدود کند. اما بدون استفاده از کوکی ها اسکریپت PHP چگونه شناسه یک سشن را پیدا می کند؟ یک جایگزین برای آن وجود دارد.

از SID ثابت استفاده می شود که با شروع سشن تعریف می شود. اگر کاربر اجازه استفاده از کوکی ها را بدهد، یک رشته خالی خواهد بود. اما اگر کاربر استفاده از کوکی ها را رد کند، SID فرم session_name=session_id را خواهد داشت. برای ثبت و ذخیره متغیرها می توانید از این فرم بدون قید و شرط استفاده و جاسازی کنید.

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

<?php

   session_start();

   if (isset($_SESSION[‘counter’])) {

      $_SESSION[‘counter’] = 1;

   }else {

      $_SESSION[‘counter’]++;

   }

   $my_Msg = “This page was visited “.  $_SESSION[‘counter’];

   $my_Msg .= ” time during this session.\n”;

   echo ( $my_Msg );

?>

<p>

   To continue click here <br />

   <a  href = “newpage.php?<?php echo htmlspecialchars(SID); ?>”>

</p>

خروجی

SessioninPHP_4

با کلیک های کاربر روی لینک، SID همراه با شناسه سشن به مرورگر ارسال می شود.

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

حتما آموزش صفر تا صد php (رایگان) ما را دانلود کنید

نتیجه گیری

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

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

2 دیدگاه. ارسال دیدگاه جدید

  • با سلام
    من با app1.php یه session ساختم و با app2.php اون session رو فراخوانی کردم و درست هم کار میکنه. ولی وقتی مرورگر رو می بندم و فایل app2,php رو فراخوانی میکنم اون session های قبلی حذف نمیشن!! لطفا راهنمایی بفرمایید.

    پاسخ
  • یک تعریف اشتباه درمورد session وجود دارد که هر ۳۰دقیقه یک session است اما هر ۳۰دقیقه غیرفعال بودن کاربر در سایت یا صفحه مد نظر باعث منقضی شدن session کاربر می‌شود. کاربر وارد سایت شما می‌شود چرخی می‌زند از لحظه ورود به سایت اگر کلیکی برای ورود به صفحه دیگر یا هر فعالیتی رخ ندهد آن session تا ۳۰ دقیقه بعد فعال است، اگر کاربر از صفحه ما به طور کامل حتی خارج شود و قبل از اتمام ۳۰دقیقه از آخرین فعالیتش دوباره به صفحه ما مراجعه کند وارد همان session قبلی می‌شود ولی اگر حتی پس از گذشت ۳۱ دقیقه دوباره وارد سایت شود session جدیدی برای وی ایجاد می‌شود. البته session کاربر ۲۴ساعته نمی‌باشد حداکثر پس از ۴ساعت session منقضی می‌شود.

    پاسخ

دیدگاهتان را بنویسید

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

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست