- جمعه 1 آبان 1405 ساعت 13:00
- 3.1.9
- کامل شده
- منقضی شده
Session Library اطلاعات موقت مربوط به یک کاربر را بین درخواستهای HTTP نگه میدارد. از Session برای وضعیت ورود، پیامهای یکبارمصرف، سبد خرید ساده یا دادههای کوتاهمدت استفاده میشود. در CodeIgniter 3، Driver و تنظیمات Session باید در فایل پیکربندی مشخص شوند.
ساختار و API اصلی
userdata() مقدار ذخیرهشده را میخواند، set_userdata() یک یا چند مقدار را ثبت میکند، unset_userdata() حذف میکند، flashdata() داده یکبارمصرف میسازد، tempdata() داده با زمان انقضا ذخیره میکند، sess_regenerate() شناسه Session را عوض میکند و sess_destroy() نشست را پایان میدهد.
نمونه استفاده
$this->session->set_userdata('user_id', 42);
$userId = $this->session->userdata('user_id');
$this->session->set_flashdata('success', 'سفارش ثبت شد');
$this->session->sess_regenerate(TRUE);نکته مهم
پس از ورود موفق، شناسه Session را بازتولید کنید. اطلاعات حساس را بدون نیاز در Session قرار ندهید و Cookieها را با Secure، HttpOnly و SameSite مناسب تنظیم کنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
متدهای Session
| متد یا مفهوم | کاربرد |
|---|---|
userdata($key) | خواندن داده نشست. |
set_userdata($key, $value) | ثبت یک یا چند مقدار. |
unset_userdata($key) | حذف مقدار. |
flashdata($key) | داده یکبارمصرف برای درخواست بعد. |
keep_flashdata($key) | نگه داشتن Flashdata برای یک درخواست دیگر. |
tempdata($key, $value, $ttl) | داده موقت با زمان انقضا. |
sess_regenerate() و sess_destroy() | تغییر شناسه یا پایان نشست. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای userdata($key)، set_userdata($key, $value)، unset_userdata($key)، flashdata($key) را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.