session ها در php

ناصر نادری | 1394/02/19


بنام خدا .

بعد از کوکی ها نوبت میرسه به بحث 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 بصورتی امن به صفحه بعدی منتقل میشه .

تا جلسه بعد در پناه حق ...


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید