متغیرهای جلسه در PHP
متغیرهای جلسه (session) در php
وقتی یک Application تحت ویندوز را باز می کنید و چند تغییر روی آن می دهید و سپس آنرا می بندید، کامپیوتر می داند شما چه کسی هستید، چه موقع درخواست را آغاز و چه موقع آن را به اتمام رسانده اید. اما در اینترنت یک مشکل وجود دارد، سرور وب نمی داند شما که هستید و چه می کنید چون آدرس HTTP، حالت State را پشتیبانی نمی کند.
یک جلسه یا session این مشکل را برای شما حل می کند، در حقیقت اطلاعات کاربر(مثل: نام کاربری و غیره) بر روی سرور برای استفاده های بعدی ذخیره می شود. اما اطلاعات جلسه موقتی اند و پس از اینکه کاربر، وب سایت را رها کند، اطلاعات حذف خواهند شد، اگر نیاز به ذخیره سازی دائمی دارید باید داده ها را در یک پایگاه داده ذخیره کنید.
جلسه ها با ایجاد یک شماره ID منحصر به فرد برای هر بیننده و ذخیره متغیرها براساس این شماره ها کار می کنند.
نکته: در یک پروژه تحت وب، بعد از ایجاد یک متغیر جلسه، مقدار آن برای همه ی صفحات پروژه قابل دستیابی است.
آغاز یک جلسه (session) در php
قبل از اینکه بتوانید اطلاعات کاربر، را در جلسه تان ذخیره کنید، ابتدا باید یک جلسه آغاز شود، تابع ()session_start برای این منظور استفاده می شود.
نکته: تابع ()session_start باید قبل از تگ <html> بیاید:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
تعریف یک متغیر جلسه (session) در PHP
روش صحیح برای ذخیره و بازیابی متغیرهای جلسه، استفاده از SESSION_$ است:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
خروجی کد بالا:
Pageviews=1
در مثال زیر یک "شمارنده بازدید صفحه" ایجاد کرده ایم، تابع ()isset بررسی می کند که آیا متغیر "views" در حال حاضر تنظیم شده است یا نه:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>
از بین بردن جلسه (session) در PHP
برای از بین بردن جلسه ها در PHP می توان از توابع زیر استفاده کرد:
- ()unset: یک جلسه مشخص را به عنوان پارامتر دریافت می کند و آنرا از بین می برد.
- ()session_destroy: کلیه جلسه های ایجاد شده را از بین می برد.
<?php
unset($_SESSION['views']);
?>
<?php
session_destroy();
?>
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 22924
دیدگاهها
باسلام چطور میشه همزمان با بستن مرور گر توسط کاربر session رو هم پاک کرد
شما نیازی به سشن نداری...متغیر معمولی این کارو برات میکنه
با سلام و تشکر
فکر میکنم تنظیمات داخلی مرورگر این امکان رو در اختیار کاربر بذاره تا سشنها رو مدیریت کنه.
در ثانی بستن مرورگر یک عمل سمت کلاینت هست و شما باید با بستن مرورگر یه درخواست به سرور بفرستید و سشن رو پاک کنید. البته نمیدونم چنین روالی در اختیار کاربر خواهد بود یا نه.
برای صفحات حساس معمولا سشن رو طوری مقدار میدن که امکان لاگین فقط در همون لحظه باشه،و با بستن تب یا مرورگر، سشنی ذخیره نخواهد بود که بخواد پاک بشه یا نه.
اگر سشن رو ذخیره نکنید، با بستن مرورگر مقدارش هم پاک میشه.
با سلام و احترام
من میخوام وقتی محصولاتم رو به سبد خرید اضافه میکنم با session اطلاعاتم به سبد خرید وارد میشه که این اطلاعات داخل تگ td نمایش داده میشه حالا من میخوام اطلاعات این td ها رو در بانک ذخیره کنم ممنون میشم راهنمایی کنین که چگونه میشه اطلاعاتی که از طریق session فراخونی شده و وارد td شده حالا به بانک اضافه بشه.
با سپاس از شما
با سلام و تشکر.
Session متغیری سراسری در سمت سرور هست و شما میتونید از این متغیر برای مقاصد خود استفاده کنید. در سشن معمولا اطلاعات نگهداری میشه.
تگها فقط جنبهی نمایشی دارن. یعنی شما از تگ td یا هر تگ دیگری صرفا فقط باید برای نمایش به کاربر استفاده کنید. برای گرفتن اطلاعات کاربر و ... فقط باید اطلاعاتی که از دیتابیس یا از کنترلهای فرم گرفته میشه رو ذخیره و بازیابی کنید.
اما در مورد سؤال شما،سؤالتون خیلی مفهوم نیست.
ولی به طور کلی مفهومش اینه که برای نمایش معمولا محصولات یه کدی دارن که این کد در داخل یک کنترل نگهداری میشه. وقتی کاربر محصول یا محصولاتی رو علامت میزنه، در واقع کد این محصولات برای سرور ارسال میشه. اینجا شما باید این کد محصول یا محصولات رو در سشن بریزید و بر حسب نیاز خودتون، روی اونها عملیات انجام بدید.
سؤال خودتون رو کمی بیشتر توضیح بدید یا اینکه کدهاتون رو بذارید تا بشه بهتر راهنمایی کرد.