سلام
و ...
بریم یکم راجع به session ها بخونیم. ببینیم چجوری میشه باش کار کرد.
خب برای اینکه با sessionها کار کنیم باید اول کد زیر را بنویسیم.
$session = \Config\Services::session($config);
این تنظیمات بهتر است توی متد construct نوشته شود تا تمام متدهای controller ما به این تنظیمات دسترسی داشته باشند. یکبار که لود شد session ها در دسترس قرار میگیرند. config$ تنظیماتی است که ما میخواهیم اضافه کنیم. اگر چیزی برای اضافه کردن نداریم داخل پرانتز را خالی میگذاریم.
اگر نخواستیم از دستور بالا استفاده کنیم میتوانیم از helper function مربوطه استفاده کنیم.
$session = session();
وقتی که یک صفحه laod میشود کلاس session چک میکند ببیند که آیا session معتبری از سمت کاربر ارسال شده؟ اگر ارسال شده با مقدار ذخیره شده برابر است یا خیر. اگر نبود مقدار جدید تولید میکند.
اگر session معتبر موجود بود، سشن update میشود.
این اتفاقات بالا خودشون خود به خود اتفاق میافتد و لازم نیست که ما کار خاصی بکنیم.
خواندن مقدار session:
توی CI برای گرفتن مقدار session از متد get استفاده میکنیم. مثلا یک session داریم بنام item. برای گرفتن مقدارش اینگونه مینویسیم:
$session->get('item');
یا با استفاده از helper function اینگونه مقدار را میگیریم:
session('item');
مقدار دهی session در CI:
برای مقدار دهی session در CI از متد set استفاده میکنیم.
Session->set('hello", "hi every body");
روش دیگر مقدار دهی هم اینگونه است که مقادیر را داخل associative array قرار بدهیم و بعد آرایه رو به متد set بدهیم مثال:
$newdata = [ 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ]; $session->set($newdata);
برای پاک کردن مقدار session از متد remove استفاده میکنیم.
$session->remove('item');
معرفی flashData:
یک مدل session دیگر داریم بنام flashdata. این session اینگونه است که فقط برای request بعدی در دسترس هست و بعد بصورت خودکار پاک میشود
این flashData بسیار پر کاربرد است. برای پیام های موقت و ارسال error ها و این قبیل استفاده ها بسیار مفید است.
مثلا میخواهیم پستی را update کنیم اگه موفقیت آمیز بود پیام میدهد که " پست شما با موفقیت ویرایش شد"
و اگر به خطا خورد بگوید "ویرایش پست شما موفقیت آمیز نبود. لطفا دوباره امتحان کنید". و از این قبیل پیام ها.
مقدار دهی از طریق متد ()setFlashdata است.
$session->setFlashdata('item', 'value');
و برای خوندن مقدار این مدل session ها از متد ()getFlashdata استفاده میکنیم.
$session->getFlashdata('item');
برای پاک کامل session ها از متد destroy استفاده میکنیم. این متد در مواردی مثل logOut استفاده میشود.
$session->destroy();
و تمام sessionها پاک میشود.
این هم از session بصورت مختصر و مفید ??