آموزش جلسات در PHP
آموزش جلسات در PHP
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش جلسات در PHP خواهیم پرداخت.
یک روش جایگزین برای در دسترس قرار دادن داده ها در صفحات مختلف کل وب سایت، استفاده از جلسه PHP است.
یک جلسه فایلی را در یک دایرکتوری موقت در سرور ایجاد می کند که متغیرهای جلسه ثبت شده و مقادیر آنها در آن ذخیره می شود. این داده ها در طی آن بازدید برای تمام صفحات سایت در دسترس خواهد بود.
مکان پرونده موقتی با تنظیماتی در پرونده php.ini بنام session.save_path تعیین می شود. قبل از استفاده از هر متغیر جلسه ، مطمئن شوید که این مسیر را تنظیم کرده اید.
وقتی جلسه شروع می شود به دنبال اتفاقاتی می افتد –
- PHP ابتدا یک شناسه منحصر به فرد برای آن جلسه خاص ایجاد می کند که یک رشته تصادفی از 32 عدد هگزادسیمال مانند 3c7foj34c3jj973hjkop2fc937e3443 است.
- کوکی به نام PHPSESSID به طور خودکار برای ذخیره سازی رشته شناسایی منحصر به فرد جلسه به رایانه کاربر ارسال می شود.
- یک پرونده به طور خودکار در فهرست موقتی تعیین شده در سرور ایجاد می شود و نام شناسه منحصر به فرد پیشوند sess_ یعنی sess_3c7foj34c3jj973hjkop2fc937e3443 را دارد.
هنگامی که یک اسکریپت PHP می خواهد مقدار را از یک متغیر جلسه بازیابی کند ، PHP به طور خودکار رشته شناسه منحصر به فرد جلسه را از کوکی PHPSESSID دریافت می کند و سپس پرونده ای را که دارای آن نام است در فهرست موقت خود جستجو می کند و با مقایسه هر دو مقدار می توان اعتبار سنجی را انجام داد.
هنگامی که کاربر مرورگر خود را از دست می دهد یا پس از ترک سایت ، یک جلسه پس از مدت زمان تعیین شده و معمولاً به مدت 30 دقیقه جلسه را خاتمه می دهد.
شروع یک جلسه PHP
یک جلسه PHP با فراخوانی تابع ()session_start به راحتی شروع می شود. این تابع ابتدا بررسی می کند که آیا یک جلسه از قبل شروع شده است یا خیر و هیچ کدام شروع نشده است یا خیر. توصیه می شود تماس را به ()session_start در ابتدای صفحه قرار دهید.
متغیرهای جلسه در آرایه انجمنی موسوم به $ _SESSION [] ذخیره می شوند. در طول عمر یک جلسه می توان به این متغیرها دسترسی داشت.
مثال زیر یک جلسه را شروع می کند و سپس متغیری به نام شمارنده را ثبت می کند که هر بار بازدید از صفحه در طول جلسه افزایش می یابد.
برای بررسی اینکه آیا متغیر جلسه از قبل تنظیم شده است یا خیر ، از تابع ()Isset استفاده کنید.
این کد را در یک فایل test.php قرار دهید و بارها این فایل را بارگیری کنید تا نتیجه را ببینید –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?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> |
این نتیجه زیر را ایجاد می کند –
1 |
You have visited this page 1in this session. |
از بین بردن یک جلسه PHP
یک جلسه PHP را می توان با تابع ()session_destroy از بین برد. این عملکرد به هیچ استدلالی احتیاج ندارد و با یک تماس می توان تمام متغیرهای جلسه را از بین برد. اگر می خواهید یک متغیر جلسه را از بین ببرید ، می توانید از تابع () unset (تنظیم) برای تنظیم مجدد متغیر جلسه استفاده کنید.
در اینجا مثالی برای تنظیم مجدد یک متغیر وجود دارد –
1 2 3 |
<?php unset($_SESSION['counter']); ?> |
در اینجا فراخوانی است که تمام متغیرهای جلسه را از بین می برد –
1 2 3 |
<?php session_destroy(); ?> |
فعال کردن جلسه خودکار
اگر می توانید متغیر session.auto_start را در پرونده php.ini 1 قرار دهید ، برای شروع جلسه ، نیازی به فراخوانی تابع ()start_session نیست.
جلسات بدون کوکی
ممکن است موردی وجود داشته باشد که کاربر اجازه ذخیره کوکی ها را در دستگاه خود نداشته باشد. بنابراین روش دیگری برای ارسال شناسه جلسه به مرورگر وجود دارد.
متناوباً ، می توانید از SID ثابت استفاده کنید که در صورت شروع جلسه تعریف می شود. اگر مشتری کوکی جلسه مناسبی را ارسال نکرده است ، فرم session_name = session_id دارد. در غیر این صورت ، آن را به یک رشته خالی گسترش می دهد. بنابراین ، می توانید آن را بدون قید و شرط در URL ها جاسازی کنید.
مثال زیر نحوه ثبت متغیر و نحوه پیوند صحیح به صفحه دیگر با استفاده از SID را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?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> |
این نتیجه زیر را ایجاد می کند –
1 2 |
You have visited this page 1in this session. To continue click following link |
برای چاپ SID ممکن است از ()htmlspecialchars به منظور جلوگیری از حملات مربوط به XSS استفاده شود.
لیست جلسات قبل آموزش PHP
- آموزش PHP
- معرفی PHP
- آموزش تنظیمات محیط PHP
- آموزش نحو PHP
- آموزش انواع متغیر در PHP
- آموزش انواع ثابت ها در PHP
- آموزش انواع عملگرها در PHP
- آموزش تصمیم گیری در PHP
- آموزش انواع حلقه در PHP
- آموزش آرایه ها در PHP
- آموزش رشته ها در PHP
- آموزش مفاهیم وب در PHP
- آموزش روش های GET & POST در PHP
- آموزش Inclusion فایل در PHP
- آموزش پرونده ها و I / O در PHP
- آموزش توابع در PHP
- آموزش کوکی ها در PHP
دیدگاه شما