وباکا

آموزش تخصصی برنامه نویسی وب

وقتی شما با یک برنامه کاربردی کار می کنید، آنرا را باز می کنید، یکسری تغییرات انجام داده و سپس آنرا می بندید. به این فرآیند یک session یا جلسه کاری می گویند. کامپیوتر می داند که شما چه کسی هستید. همچنین می داند که چه وقت برنامه را شروع کرده و چه وقت پایان داده اید. ولی در اینترنت یک مشکل وجود دارد: از آنجا که سرویس دهنده های وب با انبوه کاربران ناشناس سروکار دارند،

1- کاربا Session  ها

پروتکل HTTP بصورت state-less عمل می کند. در نتیجه سرورهایHTTP حالت را نگه نمی دارند.پس وب سرور نمی داند شما کی هستید و چه می خواهید انجام دهید. برای حل این مشکل زبانهای برنامه نویسی مبتنی بروب مثل PHP راه حل sessionرا ارائه می‌کنند و به کاربر اجازه می دهند تا اطلاعاتی را برای استفاده در مراجعات بعدی،روی سرور ذخیره کند (اطلاعاتی مثل نام کاربری،اقلام خریداری شده و غیره) . با این حال اطلاعات session موقتی هستند و با خارج شدن شما از وب سایت از بین خواهند رفت. اگر می خواهید اطلاعات به صورت دائمی باقی بمانند باید آنها را در بانک اطلاعاتی ذخیره کنید.

هر کاربر دارای یک session اختصاصی بوده که از دسترس کاربران دیگر محافظت شده است. در اینجا منظور از کاربر، برنامه مرورگر است. با اجرای مرورگر ، کاربر بوجود آمده، می توان برای او session تخصیص داد و با بسته شدن مرورگر، کاربر از بین رفته و بطور پیش فرض session او هم پاک می شود.

اطلاعات قرارداده شده در سشن کاربر در تمام صفحات آن سایت قابل دسترس و استفاده هستند. پس سشن می تواند یک فضای مشترک بین صفحات مختلف سایت جهت به اشتراک گذاری اطلاعات باشد. و در این راستا، کاربرد های مختلفی از جمله تشکیل سبد خرید، تشخیص هویت کاربر و کنترل دسترسی کاربران دارد.

1-1- شروع بکار Session

قبل از اینکه بتوانید در  sessionتان اطلاعاتی ذخیره کنید، باید آنرا شروع کنید.

توجه : تابع session_start() باید قبل از تگ <html> قرار گیرد:
<?php session_start(); ?><html>
<body>

</body>
</html>

کد فوق session مربوط به کاربر را در سرور ثبت نام خواهد کرد، به شما اجازه خواهد داد تا اطلاعات کاربر را ذخیره کنید و یک UID به session کاربر تخصیص خواهد داد.

1-2- ذخیره سازی متغیرهای session

روش صحیح برای ذخیره و بازیابی متغیرهای session استفاده از متغیر $_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” از قبل وجود دارد و تنظیم شده است. اگر “views” از قبل وجود داشته باشد، آنرا یک واحد اضافه کرده و گرنه یک متغیر “views” ایجاد کرده و آنرا مقدار 1 می دهد.

<?php
session_start();if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

1-3- از بین بردن session

برای از بین بردن بعضی از داده های session می توان از تابع unset()  یا تابع session_destroy() استفاده کرد.

تابع unset() برای از بین بردن متغیرهای مشخصی از session استفاده می شود:

<?php
unset($_SESSION['views']);
?>

می توانید برای از بین بردن کامل session تابع session_destroy() را فراخوانی کنید:

<?php
session_destroy();
?>

توجه: session_destroy() کل session شما را از بین برده و همه داده های ذخیره شده در session را از دست خواهید داد.

2- به اشتراک گذاری اطلاعات بین صفحات مختلف سایت

یکی دیگر از کاربردهای session انتقال پیغام ها و هر نوع اطلاعات بین صفحه مختلف است و می توان از آن برای به اشتراک گذاری اطلاعات بین صفحات مختلف استفاده کرد ، به عنوان مثال فرض کنید در یک صفحه عمل ویرایش را انجام داده اید و می خواهید پیغام “موفقیت” یا “خطا” را در صفحه دیگری نمایش دهید. به این منظور بعد از انجام عمل، پیغام مورد نظر را در یک متغیر session ذخیره کرده و در صفحه دیگر آنرا چاپ می کنید. قطعه کد زیر عمل ویرایش دانشجو را انجام می دهد و پیغام مناسب را در session ذخیره می کند:

stud-add2.php

<?php
$name= $_POST[‘name’];
$avgr  = $_POST[‘avgr’];
$fid     = $_POST[‘fid’];
include(‘config.php’);
$sql="INSERT INTO tbl_studs (name, avgr, fid)
VALUES(‘$name’ ,$avgr ,$fid  )” ;
$res=mysql_query( $sql ,$conn );
session_start();
if ( $res )
$_SESSION[‘msg’] = “رکورد با موفقیت درج شد ”;
else   $_SESSION[‘msg’] = “درج رکورد با خطا مواجه شد ”;
header(“location:stud-list.php”);
}
?>

در ذیل کد برنامه stud-list.php را می بینید که وجود متغیر $_SESSION[‘msg’] را بررسی می کند، اگر وجود داشت آنرا چاپ می کند و سپس آنرا از بین می برد. دقت کنید که session_start() باید در ابتدای صفحه و قبل از تگ html، اجرا شود.

stud-list.php

<?php   session_start();    ?>
<html>
<body>
<p align=”center” >
<?php
 if ( isset( $_SESSION[‘msg’] ) ) {
   echo $_SESSION[‘msg’];
   unset($_SESSION[‘msg’]);
}
 ?>
</p>
<table width="600" border="1" align="center" dir="rtl">
<tr>
<th>SID</th><th>NAME</th><th>AVERAGE</th><th>FID</th><th>&nbsp; </th></tr>
<?php
require(“config.php”);

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب