آموزش جلسات در PHP

3 سال پیش
آموزش جلسات در PHP

آموزش جلسات در PHP

 

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

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

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

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

وقتی جلسه شروع می شود به دنبال اتفاقاتی می افتد –

  • PHP ابتدا یک شناسه منحصر به فرد برای آن جلسه خاص ایجاد می کند که یک رشته تصادفی از ۳۲ عدد هگزادسیمال مانند ۳c7foj34c3jj973hjkop2fc937e3443 است.
  • کوکی به نام PHPSESSID به طور خودکار برای ذخیره سازی رشته شناسایی منحصر به فرد جلسه به رایانه کاربر ارسال می شود.
  • یک پرونده به طور خودکار در فهرست موقتی تعیین شده در سرور ایجاد می شود و نام شناسه منحصر به فرد پیشوند sess_ یعنی sess_3c7foj34c3jj973hjkop2fc937e3443 را دارد.

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

هنگامی که کاربر مرورگر خود را از دست می دهد یا پس از ترک سایت ، یک جلسه پس از مدت زمان تعیین شده و معمولاً به مدت ۳۰ دقیقه جلسه را خاتمه می دهد.

شروع یک جلسه PHP

یک جلسه PHP با فراخوانی تابع ()session_start  به راحتی شروع می شود. این تابع ابتدا بررسی می کند که آیا یک جلسه از قبل شروع شده است یا خیر و هیچ کدام شروع نشده است یا خیر. توصیه می شود تماس را به ()session_start  در ابتدای صفحه قرار دهید.

متغیرهای جلسه در آرایه انجمنی موسوم به $ _SESSION [] ذخیره می شوند. در طول عمر یک جلسه می توان به این متغیرها دسترسی داشت.

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

برای بررسی اینکه آیا متغیر جلسه از قبل تنظیم شده است یا خیر ، از تابع ()Isset استفاده کنید.

این کد را در یک فایل test.php قرار دهید و بارها این فایل را بارگیری کنید تا نتیجه را ببینید –

<?php
   session_start();
   
   if( isset( $_SESSION['counter'] ) ) {
      $_SESSION['counter'] += 1;
   }else {
      $_SESSION['counter'] = 1;
   }
    
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
?>

<html>
   
   <head>
      <title>Setting up a PHP session</title>
   </head>
   
   <body>
      <?php  echo ( $msg ); ?>
   </body>
   
</html>

 

این نتیجه زیر را ایجاد می کند –

You have visited this page 1in this session.

 

از بین بردن یک جلسه PHP

یک جلسه PHP را می توان با تابع ()session_destroy از بین برد. این عملکرد به هیچ استدلالی احتیاج ندارد و با یک تماس می توان تمام متغیرهای جلسه را از بین برد. اگر می خواهید یک متغیر جلسه را از بین ببرید ، می توانید از تابع () unset (تنظیم) برای تنظیم مجدد متغیر جلسه استفاده کنید.

در اینجا مثالی برای تنظیم مجدد یک متغیر وجود دارد –

<?php
   unset($_SESSION['counter']);
?>

 

در اینجا فراخوانی است که تمام متغیرهای جلسه را از بین می برد –

<?php
   session_destroy();
?>

 

فعال کردن جلسه خودکار

اگر می توانید متغیر session.auto_start را در پرونده php.ini 1 قرار دهید ، برای شروع جلسه ، نیازی به فراخوانی تابع ()start_session  نیست.

جلسات بدون کوکی

ممکن است موردی وجود داشته باشد که کاربر اجازه ذخیره کوکی ها را در دستگاه خود نداشته باشد. بنابراین روش دیگری برای ارسال شناسه جلسه به مرورگر وجود دارد.

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

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

<?php
   session_start();
   
   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   }else {
      $_SESSION['counter']++;
   }
   
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   
   echo ( $msg );
?>

<p>
   To continue  click following link <br />
   
   <a  href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

 

این نتیجه زیر را ایجاد می کند –

You have visited this page 1in this session.
To continue click following link

 

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

 

منبع.

لیست جلسات قبل آموزش PHP

  1. آموزش PHP
  2. معرفی PHP
  3. آموزش تنظیمات محیط PHP
  4. آموزش نحو PHP
  5. آموزش انواع متغیر در PHP
  6. آموزش انواع ثابت ها در PHP
  7. آموزش انواع عملگرها در PHP
  8. آموزش تصمیم گیری در PHP
  9. آموزش انواع حلقه در PHP
  10. آموزش آرایه ها در PHP
  11. آموزش رشته ها در PHP
  12. آموزش مفاهیم وب در PHP
  13. آموزش روش های  GET & POST در PHP
  14. آموزش Inclusion فایل در PHP
  15. آموزش پرونده ها و I / O در PHP
  16. آموزش توابع در PHP
  17. آموزش کوکی ها در PHP
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه