$_SESSION
متغییر پایه ای برای ذخیره موقت اطلاعاتی در مورد کاربر فعلی است ، برای مثال شما در حال بازدید از یک وبسایت هستید ، اما سرور دقیقا نمی داند شما کی هستید ، تنها راه برای شناسایی کاربر فعلی ، استفاده از کوکی و سئشن است که در مقاله کار با سیشن ها در php به آن می پردازیم .
$_SESSION
به شما اجازه ذخیره اطلاعاتی از کاربر می دهد که قابل دسترسی در هر صفحه ای از سایت است البته تا زمانی که سیشن مورد نظر فعال باشد.
دلیل استفاده گسترده از سیشن (SESSION) می تواند به دلیل محدودیتی که در زیرساخت پروتکل HTTP است ،در نظر گرفت .
چراکه پروتکل HTTP از پایه Stateless است و هیچ گونه اطلاعاتی از کاربر فعلی نمی دهد درواقع کاربران را از هم تشخیص نمی دهد و نمی داند این کاربر قبلا چه صفحاتی را مرور کرده است ، و غیره . برای همین موضوع کار با سیشن ها و کار با کوکی ها در php و امنیت سئشن در php مطرح شد .
کار با سیشن ها در PHP چگونه است ؟
$_SESSION
در PHP یک آی دی یکتا برای هر کاربر می سازد ، این ID ها در کوکی یا جایی در آدرس URL ذخیره میشود ، به هر حال این داده های سیشن در سرور ذخیره می شوند.
با اینکه صد ها کاربر در عین حال از سایت استفاده می کنند ، PHP دقیقا کابران را از همدیگر تشخیص می دهد .این قابلیت بسیار امن هم است چونکه سیشن ها از طریق مرورگر کلاینت در دسترس نیست و هیچ راه آسان برای دزدیدن و جعل سیشن ها از یک کامپیوتر دیگر نیست
شروع کار با سیشن ها
برای شروع کار با سیشن ها در PHP ، ما از تابع session_start()
استفاده می کنیم . این تابع باید اول هر نوع کد html یا متنی باشد . مانند کد زیر :
1 2 3 4 5 6 7 |
<?php session_start(); // starts PHP session //other PHP codes and HTML ?> <HTML> </HTML> |
زمانی که session_start() فراخوانی می شود ، یک سیشن جدید ایجاد می کند یا اینکه سیشن قبلی را ادامه می دهد.
ذخیره و بازیابی متغیرهای سیشن
زمانی که یک سیشن فعال باشد ، با استفاده از $_SESSION
می توانیم مقادیر را در آن ذخیره کنیم که بعدا از طریق هر اسکریپت PHP در سرور قابل دسترس خواهد بود
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // starts PHP session session_start(); //store a session variable $_SESSION["name"] = "Saaraan"; //storing array variables $_SESSION["arr"] = array('name' => 'saaraan', 'url' => 'http://www.sanwebe.com', 'type'=> 'blog'); //retrieve and output stored session variable echo $_SESSION["name"]; ?> |
بار اول که متغیر ذخیره شد ، می توانیم آن را در همان وبسایت هر کجا که خواستیم بازیابی کنیم . تنها کاری کا باید انجام بدیم ساخت سیشن با همان اسم در مثال بالا و گرفت خروجی از مقدار آن است.
1 2 3 4 5 6 7 8 9 10 |
<?php // start or resume PHP session session_start(); //retrieve and output stored session variable echo $_SESSION["name"]; //retrieve array vars print_r($_SESSION["arr"]); ?> |
حذف یا پاکسازی سیشن
بهتر است زمانی که کار با سیشن ها نظر تمام شد آن را پاک کنیم . برا حذف آن کافیست از تابع unset()
استفاده کنیم
1 2 3 4 |
<?php //removes variable called name unset($_SESSION["name"]); ?> |
یا اینکه برای حذف کلیه سیشن ها از session_destroy()
بهره ببریم .
1 2 3 4 |
<?php //destroy everything session_destroy(); ?> |
امیدوارم مقاله کوتاه کار با سیشن ها (آموزش SESSION در php) مفید بوده باشه . برای تعیین تاریخ انقضا در سئشن و افزایش امنیت SESSION کلیک کنید .
هرگونه سوال و یا مشکلی داشتید لطفا از طریق نطرات ارسال کنید. سریعا ، پاسخگوی سوالات شما هستیم.
موفق و پیروز باشید.
با سلام
من یه صفحه ی ورود گذاشتم که قبلا واسه یه سایت دیگه بود و کار میکرد. روی لوکال هم کار میکنه. الان واسه یه سایت دیگه گذاشتم اما خطای زیر رو میده :
Warning: session_start(): open(/home/tmp//sess_9auphrla8tu8jg2okv34coo7d6, O_RDWR) failed: No such file or directory (2) in /home1/blourmir/public_html/login.php on line 2
ممنون میشم راهنمایی کنید
سلام. یک فولدر tmp ایجاد و پرمیشن ۷۷۷ بدید و از این کد هم در اول فایل php خود استفاده کنید
ini_set(‘session.save_path’, ‘tmp’);
سلام ی سوال داشتم این سیشین کجا باید استفاده کنم .یعنی کجای کد.تمام مثال ها فقط خام کد نوشتن.اما کجا باید استفاده کنم؟در صفحه لاگین؟ ,و اینکه من دوتا گزینه برای ورود به سایت گذاشتم اسم و فامیلی؟
سلام ی سوال داشتم این سیشین کجا باید استفاده کنم .یعنی کجای کد.تمام مثال ها فقط خام کد نوشتن.اما کجا باید استفاده کنم؟در صفحه لاگین؟
سلام. بله در بخش هایی که نیاز به دادن دسترسی به کاربر دارید مثلا بعد لاگین
ممنون ولی میشه بگین چرا اون کدی که واستون ارسال کردن جواب نمیده میخام دلیل اجرا نشده اون رو بدونم
ممنون از میشم اگه جواب بدین
دوست عزیز شما در نظرات قبلی کدی ارسال نکردید.
میخام بعد از هر بار که load میشه بگه باز چندم هست . ولی کار نمی کنه
برای اینکار بهتره یه کانتر بندازید و مقدار عددی رو در سیشن ذخیره و با هر بار اجرای صفحه , یکی بهش اضافه و ذخیره کنید.
سلام ببخشید مشکل این کد چیه؟
و این که session ها در لوکال فرقشون با هاست چیه. ممنون
سلام . هیچ مشکلی نداره . بهتره مقاله های انواع خطاها در php و <strong>output buffering در php را مطالعه کنید.
موفق باشید.