بنام خدا .
بعد از کوکی ها نوبت میرسه به بحث session ها .
session ها به ما این امکان رو میدن که توی وب و در سمت
سرور مقادیری رو داشته باشیم که در صفحات متعدد قابل دسترسی هستند . مثلا شما
وقتی به یک وب سایت لاگین میشید برای شما یک session ایجاد میشه و تمامی
صفحاتی که شما مرور میکنید تا هنگام خروج از سایت یا انقضا تاریخ
اعتبار session میتونن از مقدار این سشن استفاده کنن.
نکته : session ها برای هر کاربر بصورت مجزا و
با یک id خاص ایجاد میشه و مقادیر سشن برای کاربران مختلف سایت مختلف هست .
session ها در یک فایل در مسیر temporary کامپیوتر سرور (بر
عکس کوکی) ذخیره میشن . میتونیم بهش مثل کوکی سمت سرور نگاه کنیم .
وقتی یک session شروع یا به اصطلاح start میشه مراحل زیر
اتفاق میفتن :
- php یک شناسه یکتا بصورت تصادفی
که رشته ای از اعداد هگزادسیمال هست ایجاد میکنه .
- یک کوکی با نام PHPSESSID به کامپیوتر کلاینت
ارسال میکنه که حاوی کد شناسه یکتا session هست.
- فایل session رو ی کامپیوتر سرور در مسیر temporary ایجاد
میشه و سشن ما با شناسه یکتا به همراه یک پیشوند _sess درش ذخیره
میشه .
برای بررسی مقدار session ابتدا php مقدار اون رو از روی
کوکی ذخیره شده برمیداره و با شناسه مورد نظر روی سرور مقایسه میکنه و بعد
ازش استفاده میکنه .
نکته : session ها در هنگام خروج از مرورگر از بین
میرن یا اینکه در یک دوره زمانی معمولا 30 دقیقه بصورت خودکار منقضی میشن .
برای استفاده از session ها باید در اول فایل php مون متد
session_start() رو فراخوانی کنیم . متغییر های نوع session در آرایه ای با
نام SESSION_$ ذخیره میشن . اندیس این آرایه درواقع نام session ما خواهد بود
.
یک پوشه در مسیر سرورتون با نام Session_test ایجاد کنید و
داخلش یک فایل php با نام index.php ایجاد کنید و کدها زیر رو داخلش کپی کنید .
<?php
//شروع استفاده از سشن
session_start();
//بررسی اینکه ایا سشن مورد نظر ایجاد شده یا نه
if( !isset( $_SESSION['name'] ) )
{
$_SESSION['name'] ="www.appinapps.com";
}
?>
<html>
<head>
<title>تست session</title>
</head>
<body>
<a href="page2.php" >برای تست سشن اینجا را کلیک کنید</a>
</body>
</html>
یک فایل دیگه توی همین پوشه ایجاد کنید با نام page2.php و
داخلش کدهای زیر رو بنویسید :
<?php
//شروع استفاده از سشن
session_start();
//چاپ مقدار ست شده در صفح قبلی
echo "سلام به وب سایت $_SESSION['name'] خوش آمدید";
?>
صفحه index.php رو اجرا کنید و نتیجه رو ببینید .
برای از بین بردن session دو راه حل داریم . یکی اینه که
مقدار session مورد نظر رو از بین ببریم یا اینکه خود session رو روی سایت از بین
ببریم .
<?php
//غیر فعال کردن سشن مورد نظر
unset($_SESSION['name']);
?>
<?php
//غیر فعال کردن مد سشن در کل صفحه
session_destroy();
?>
نکته : اگر در فایل php.ini مقدار متغییر
session.auto_start را روی 1 تنظیم کنید نیازی به session_start در اول برنامه تون
ندارید .
بعضی مواقع ممکنه مرورگر کلاینت اجازه ایجاد کوکی ها رو نده
در اینصورت دیگه تو هرصفحه نمیتونیم مقدار شناسه کوکی رو با سشن روی سرور مقایسه
کنیم . برای عبور از این حالت میتونیم مقدار SID رو بعد از ایجاد صفحه بصورت دستی
به صفحات دیگه منتقل کنیم که دیگه نیازی به بررسی مقدار کوکی نداشته باشه .
کد زیر رو در صفحه index.php بجای کدهای قبلی کپی کنید :
<?php
session_start();
$_SESSION['name'] = "naser";
?>
$msg = "نام شما : ". $_SESSION['name'];
echo ( $msg );
<p>
لیک زیر را برای رفتن به صفحه بعدی کلیک کنید <br />
<a href="page2.php?<?php echo htmlspecialchars(SID); >">کلیک
کنید </a>
</p>
بدین ترتیب SID بصورتی امن به صفحه بعدی منتقل میشه .
تا جلسه بعد در پناه حق ...