عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب |
مديريت وب |
10715 |
16 |
3.1 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب
مهمترين رسالت برنامه های کامپيوتری ارتباط با کاربران و
پاسخگوئی به نياز آنان با توجه به پتانسيل های پيش بينی شده در برنامه می باشد.
شناسائی کاربران توسط برنامه های کامپيوتری می تواند زمينه ارائه سرويس ها و خدمات
بهينه تری را فراهم نمايد( ارائه سرويس ها و خدمات مشخص شده به گروهی خاص از
کاربران ) . برنامه های وب نيز از اين قاعده مستثنی نبوده و با توجه به ماهيت
Stateless بودن پروتکل ارتباطی بين سرويس گيرنده و
سرويس دهنده ( ارسال درخواست ، پاسخ به درخواست ، عدم بخاطر سپردن اطلاعاتی
در ارتباط با در خواست ارسالی و پاسخ دريافتی ) ، می بايست تمهيدات خاصی بمنظور
شناسائی کاربران اتخاذ گردد. برخی از برنامه های وب ، کاربران را ملزم می
نمايند که در ابتدا يک فرم را تکميل و اصطلاحا" ريجستر گردند . در چنين برنامه هائی
، در صورتيکه کاربر مجددا" از برنامه وب استفاده نمايد ( ملاقات مجدد وب سايت
مربوطه ) ، امکان شناسائی کاربر با بهره گيری از راهکارهای متفاوتی وجود خواهد داشت
( شناسائی کاربر بر اساس بازيابی اطلاعات ثبت شده ) . وب سايتی را در نظر بگيريد که
از طريق آن محصولاتی عرضه و توسط کاربران خريداری می گردد . در زمان خريد کالا توسط
کاربران ، سايت موردنظر می تواند اقدام به دريافت اطلاعات خريدار و ثبت آنان بر
اساس مکانيزمهای متفاوت نمايد . در صورتيکه کاربر فوق ، مجددا" از اين سايت کالائی
را خريداری نمايد ، می توان اطلاعات مربوط به وی را (اطلاعات شناسنامه ای ، آدرس و
... ) بصورت اتوماتيک در فرم سفارش جديد، درج نمود .
شناسائی
کاربران برنامه هاب وب
يکی از روش هائی که برنامه های وب
را قادر به شناسائی کاربران
می نمايد، الزام کاربران به درج نام و رمز
عبور بمنظور استفاده از برنامه می باشد. برنامه های وب
، همچنين قادر به شناسائی کاربران از طريق اطلاعات ذخيره شده بر روی کامپيوتر
کاربران
و به شکل "کوکی " می باشند. کوکی ، فايل کوچکی
بوده که يک برنامه وب
قادر به نوشتن آن بر روی کامپيوتر سرويس گيرنده است .
از مهمترين مزايای کوکی ، می توان به تعامل نامحسوس با کاربر اشاره نمود. در چنين مواردی ، کاربران
هر مرتبه که سايت را ملاقات می نمايند ، الزامی به
Log on ، نخواهند داشت . ( اطلاعات آنان ، بصورت اتوماتيک و در صورت ضرورت در دسترس
و قابل استفاده
است) . مهمترين نقطه ضعف در جهت استفاده از کوکی ، به تنظيم مرورگرها
توسط کاربران بمنظور عدم پذيرش کوکی، برمی گردد .برخی از
کاربران تمايل و علاقه ای به ذخيره سازی اطلاعات از طريق يک سايت بر روی
کامپيوتر خود
را نداشته و تصور می نمايند که ممکن است از اطلاعات فوق
، بمنظور رديابی آنان در زمان استفاده از اينترنت ،
سوء استفاده گردد. بنابراين در موارديکه قصد استفاده
از کوکی وجود داشته باشد ، می بايست در ابتدا توانائی سرويس گيرنده برای پذيرش کوکی
بررسی گردد .
در زمان استفاده از کوکی بمنظور ذخيره و بازيابی اطلاعات کاربران ،
می توان از دو رويکرد
متفاوت استفاده نمود :
-
ذخيره تمامی اطلاعات
کاربران بعنوان يک کوکی بر روی ماشين سرويس گيرنده. استفاده از روش فوق ،
درموارديکه اطلاعات کاربر ساده بوده و سرويس دهنده ضرورتی به
استفاده از آنان بمنظور تکميل عمليات خود نداشته
باشد ، می تواند مفيد باشد .
-
ذخيره يک کليد شناسائی بر روی
ماشين سرويس گيرنده و بازيابی
ساير اطلاعات کاربر از طريق يک منبع داده بر روی
سرويس دهنده با توحه به کليد شناسائی .
در ادامه به بررسی
هر يک از رويکردهای فوق
، خواهيم پرداخت.
ذخيره سازی اطلاعات کاربران بر روی
سرويس گيرنده
برای ذخيره يک کوکی بر روی ماشين سرويس گيرنده ، مراحل زير را دنبال می
نمائيم :
-
بررسی و حصول اطمينان از
توانائی سرويس
گيرنده بمنظور پذيرش کوکی ( استفاده از خصلت
Cookies مربوط به شی مرورگر)
.
-
در صورت حمايت سرويس گيرنده
از کوکی ، بررسی وجود کوکی
بر روی ماشين سرويس گيرنده ( استفاده از
مجموعه Cookies
مربوط به شی Request )
-
در صورت عدم وجود کوکی ، ايجاد
يک کوکی جديد با استفاده از کلاس HttpCookie
.
-
مقداردهی مناسب خصلت های Expiration و
Value .
-
افزدون شی Cookie به مجموعه Cookies
مربوط یه شی Response
.
برنامه زير( روتين
مربوط به رويداد Page_Load
) ، نحوه
ايجاد يک کوکی و تشخيص آخرين مرتبه
ملاقات سايت توسط کاربر را نشان می دهد.در برنامه فوق ، بررسی لازم در خصوص پديرش کوکی از
طرف سرويس گيرنده
، صورت گرفته و در صورتيکه اولين مرتبه است که کاربر سايت را ملاقات
می نمايد ، يک کوکی
جديد ايجاد و در غير اينصورت ، کوکی ايجاد شده ، بهنگام
می گردد.
VB.NET |
Private Sub
Page_Load ( ByVal Sender As System.Object , ByVal e As
System.EventArgs ) Handles Mybase.Load
If Request.Browser.Cookies Then
If
Request.Cookie ("LastVisit") Is Nothing Then
Dim CookLastVisit As New HttpCookie( " LastVisit" , Now.ToString ( ) )
CookLastVisit.Expires = DateTime.Now.AddDays( 1 )
Response.Cookie.Add (CookLastVisit )
Response.Write( " First Visit " )
Else
Dim CookLastVisit As HttpCookie = Request.Cookies ("LastVisit")
Reuest.Cookies( "LastVisit " )
Response.write ( "You last visited this page : " ,CookLastVisit.value )
Response.Cookies ( "LastVisit ").Value = Now.ToString ( )
Response.Cookies ( "LastVisit").Expires = DateTime.Now.AddDays(1)
End If
Else
Response.Write ( "Your Browser does not accept cookies . " )
End If
End Sub
|
کوکی ها نسبت به حروف بزرگ و کوچک حساس می باشند . مثلا"
LastVisit مشابه کوکی Lastvisit نمی باشد
.خصلت Expires ، نشاندهنده
تاريخ مصرف کوکی می باشد. عمر يک کوکی بصورت پيش فرض ، محدود به
زمانی است که Session کاربر خاتمه
می يابد.
درصورت تنظيم Expires بصورت
DateTime.MaxValue ، اعتبار کوکی ايجاد شده،
هرگز به اتمام نخواهد رسيد .
بمنظور حذف کوکی از ماشين سرويس گيرنده ، می توان مقدار خصلت
Expires را به زمان جاری تغيير داد .کد زير ، کوکی
LastVisit را حذف می نمايد.
VB.NET |
Private Sub
Page_Load ( ByVal Sender As System.Object , ByVal e As
System.EventArgs ) Handles butRemoveCookie.Click
Response.Cookies( "LastVisit").Expires =
DateTime.Now
End Sub |
استفاده از کليد بهمراه کوکی
يک کوکی ، قادربه ذخيره سازی 4096 بايت اطلاعات بوده و می توان بمنظور شناسائی
اطلاعات همراه کوکی از کليد ها ، استفاده نمود. برنامه زير ،
مشخصات کاربر را در يک کوکی
با استفاده از کليدهای جداگانه ای ذخيره می نمايد .
VB.NET |
Private Sub
Page_Load ( ByVal Sender As System.Object , ByVal e As
System.EventArgs ) Handles butOK.Click
Dim CookUserInfo As New HttpCookie ("UserInfo")
CookUserInfo("FirstName") = txtFirstName.Text
CookUserInfo("LastName") = txtLastName.Text
CookUserInfo("Street") = txtStreet.Text
CookUserInfo("City") = txtCity.Text
CookUserInfo("state") = drpstate.Selected.Item.value
CookUserInfo("Zip") = txtZip.Text
CookUserInfo.Expires = DateTime.Now.AddDays ( 30 )
Response.Cookies.Add( CookUserInfo )
End Sub
|
با استفاده از نام کليد ، می توان
اقدام به بازيابی مقادير نسبت داده شده به هر يک از کليدهای ذخيره شده در کوکی
نمود .
VB.NET |
Private Sub
Page_Load ( ByVal Sender As System.Object , ByVal e As
System.EventArgs ) Handles butGetData.Click
Dim CookUserInfo As New HttpCookie ("UserInfo")
txtFirstName.Text = CookUserInfo("FirstName")
txtLastName.Text = CookUserInfo("LastName")
txtStreet.Text = CookUserInfo("Street")
txtCity.Text = CookUserInfo("City")
drpstate.Selected.Item.value = CookUserInfo("state")
txtZip.Text = CookUserInfo("Zip") = txtZip.Text
End Sub |
ذخيره سازی اطلاعات کاربران بر روی
سرويس دهنده
برای ذخيره اطلاعات کاربران بر روی سرويس دهنده ، می
توان از کوکی بعنوان يک
ابزار شناسائی ( ايندکس ) بمنظور ذخيره و بازيابی اطلاعات کاربران
بر روی سرويس دهنده
در يک بانک اطلاعاتی ، يک فايل XML و ساير امکانات ذخيره
سازی داده ، استفاده نمود. برای ذخيره اطلاعات کاربران بر روی سرويس
دهنده ، مراحل زير را دنبال می نمائيم :
-
ايجاد يک کليد منحصر بفرد بمنظور
شناسائی کاربر
-
ذخيره کليد منحصر بفرد بعنوان يک
کوکی بر روی ماشين کاربر
-
ايجاد يک فايل بر روی سرويس دهنده
بمنظور ذخيره سازی اطلاعات کاربران
-
ذخيره اطلاعات کاربران بر روی
سرويس دهنده با استفاده از کليد منحصربفرد بعنوان يک ايندکس
در ادامه به بررسی
هر يک از مراحل فوق ، خواهيم
پرداخت .
ايجاد کليدهای منحصر بفرد بمنظور شناسائی کاربران
فريمورک دات نت ، Namespace با نام
System.Guid را بمنظور ايجاد شناسه های منحصربفرد سراسری (
GUID ) ارائه نموده است . GUID
، يک عدد صحيح 128 بيتی بوده که بعنوان شناسه
ای منحصربفرد در شبکه ايفای وظيفه می
نمايد . از GUID می توان بمنظور شناسائی تمامی
چيزها از جمله کاربران استفاده نمود . کد زير ، يک GUID
را ايجاد و آن را بعنوان يک کوکی بر روی کامپيوتر کاربر
و بمنظور شناسائی وی در آينده
، ذخيره می نمايد .
VB.NET |
Private Sub
Page_Load ( ByVal sender As System.Object , ByVal e As
System.EventArgs ) Handles butOK.Click
Dim cookUserID As
HttpCookie = Request.Cookies ( "UserID")
If cookUserID
Is Nothing Then
cookUserID = New HttpCookie ("UserID") , System.Guid.NewGuid ( ). ToString ( )
)
cookUserID.Name = "UserID"
End If
cookUserID.Expires = DateTime.Now.AddDays( 30 )
Response.Cookies.Add (cookUserID )
SetUserInfo (cookUserID.Value )
End Sub
|
ايجاد يک فايل بمنظور ذخيره
اطلاعات کاربران
مهمترين هدف ذخيره سازی اطلاعات کاربران،
بازيابی آنان با سرعت مناسب و پس
از ملاقات مجدد کاربران از سايت و يا اجرای برنامه وب است . با توجه به اينکه
اين نوع از کاربران با استفاده از يک کليدمنحصربفرد، شناسائی می گردند ،
می توان چنين تصور نمود که دستيابی به داده از طريق يک
Data set انجام خواهد شد. Data set ، با استفاده
از متد
Find ، قادر به بازيابی سطرهائی از داده
بکمک کليدها
ی منحصربفرد می باشد . استفاده از يک Data
set ،
بدان معنی است که فايل
ايجاد شده بر روی سرويس دهنده ، می بايست يک بانک
اطلاعاتی و يا يک فايل XML باشد . استفاده از فايل های
XML در موارديکه داده های مورد نظر برای ذخيره سازی اندک
بوده و روابط بين اقلام اطلاعاتی نيز پيچيده نباشد ، توصيه می گردد .
برای ايجاد يک فايل XML ، بمنظور ذخيره سازی
اطلاعات کاربران ، مراحل زير را دنبال می نمائيم :
-
ايجاد يک فايل
XML در ويژوال استوديو دات نت شامل داده تستی برای هر يک از فيلدهای داده که
قصد ثبت آنان در ارتباط با کاربر وجود دارد .
-
ايجاد يک XML schema برای فايل
XML ايجاد شده در مرحله قبل.
با استفاده از XML
schema ، يک Data Set قادر به مراجعه
داده موجود در فايل XML بر اساس نام می باشد .
-
مشخص نمودن فيلد کليد
در XML schema . بدين ترتيب،امکان يافتن رکوردهای
استفاده کننده از فيلد فوق با استفاده
از
متد Find ،فراهم می گردد .
-
خواندن XML schema و فايل
XML درون يک Data set .
ايجاد يک فايل XML
برای ايجاد يک فايل XML در ويژوال استوديو ، گزينه
Add New Item را از طريق منوی
Project انتخاب و در ادامه XML File
را از طريق
ليست تمپليت های نمايش داده شده ، انتخاب
می نمائيم . فايل های XML
، شباهت زيادی به فايل های HTML داشته
و در اين راستا تفاوت های مهمی نظير حساسيت نسبت به حروف بزرگ و کوچک و پيروی از يک
گرامر خاص ، نيز وجود دارد. از تگ های <element>
و <element / > بمنظور معرفی عناصر داده در يک فايل
XML استفاده می گردد . کد زير، نحوه ايجاد يک فايل
XML بمنظور ذخيره سازی
مشخصات کاربر را نشان می دهد
.
VB.NET |
<?xml version="1.0"
encoding="utf-8" ?>
<USERS xmlns="http://tempuri.org/userprefs.xsd">
<USER>
<FIRSTNAME> Ali </FIRSTNAME>
<LASTNAME> Irani </LASTNAME>
<STREET> Sabz </STREET>
<CITY> Tehran </CITY>
<STATE> Tehran </STATE>
<ZIP> 3240</ZIP>
<ID> 12345678 </ID>
</USER>
</USERS>
|

ايجاد يک XML
Schema
بمنظور استفاده از فايل XML بهمراه يک
Data Set ، می بايست در ابتدا يک XML
Schema برای Data set
ايجاد گردد.
XML Schema ، مسئوليت تشريح عناصر داده
ئی موجود در يک فايل
XML را بر عهده دارد. XML Schema
، نام عناصر ، نوع آنان
،کليد بودن فيلد و ساير اطلاعات ضروری را ارائه می نمايد . برای ايجاد XML Schema از يک
فايل XML ، زمانيکه فايل XML
در پنجره طراحی ويژوال استوديو دات نت ، فعال است ، گزينه
Create Schema را از طريق منوی XML ، انتخاب می
نمائيم . در ادامه
، ويژوال استوديو دات نت ، فايل Schema
را بمنظور تشريح فايل XML
ايجاد می نمايد .

مشخص نمودن يک فيلد کليد
با افزودن يک کليد اوليه به
XML Schema ، امکان جستجو فراهم خواهد شد .بدين
منظور ، مراحل زير را دنبال می نمائيم
:


خواندن XML
درون يک Data Set
پس از ايجاد فايل XML و XML Schema
، امکان خواندن و ذخيره آن درون يک Data set
، فراهم می گردد.
( استفاده از متدهای ReadXml و
ReadXmlSchema ) . برنامه زير ، تابعی را نشان می دهد که می توان از آن
بمنظور برگرداندن يک Data Set از
يک فايل XML با نام UserInfo
، استفاده نمود .
VB.NET |
Function GetUserData
( ) As DataSet
Dim strPath As String = Server.MapPath(
Request.ApplicationPath)
Dim dsUsers As New DataSet ( )
dsUsers.ReadXmlSchema ( strPath & "\UserInfo.xsd")
dsUsers.ReadXmlSchema ( strPath & "\UserInfo.xml")
Return dsUsers
End Function
|
ذخيره اطلاعات کاربر بر روی
سرويس دهنده
بمنظور ذخيره سازی اطلاعات کاربران بر روی سرويس دهنده بصورت يک فايل
XML ، می توان از متد SaveXML
مربوط به شی Data set استفاده نمود. روتين
SetUserInfo ( جدول زير ) ، از روتين
GetUserData بخش قبل ،استفاده
نموده تا
يک Data set را از يک فايل XML
دريافت نمايد. در ادامه
، با استفاده از متد Find
، بررسی لازم در خصوص وجود UserID
در
Data Set صورت می پذيرد.در صورتيکه UserID
پيدا نگردد ، روتين SetUserInfo سطری را برای کاربر
( قبل از
تنظيم مقادير متناظر با فيلدها از طريق کنترل های سرويس دهنده بر روی يک فرم وب
)، اضافه می نمايد. در نهايت ، SetUserInfo ، تمامی داده را به
سرويس دهنده برمی گرداند .
VB.NET |
Sub SetUserInfo (
ByVal UserID As String )
Dim strPath As String = Server.MapPath(
Request.ApplicationPath)
Dim dsUsers As DataSet = GetUserData
( )
Dim rowUser As DataRow =
dsUsers.Tables("User") .Rows.Find( UserID)
If rowUser Is Nothing Then
rowUser =
dsUsers.Tables ("User") . NewRow
dsUsers.Tables (
"User").Rows.Add ( rowUser )
End If
rowUser ("FirstName") = txtFirstName.Text
rowUser ("LastName") = txtLastName.Text
rowUser ("Street") = txtStreet.Text
rowUser ("City") = txtCity.Text
rowUser ("state") = drpstate.Selected.Item.Text
rowUser ("Zip") = txtZip.Text
rowUser ( "ID" ) = UserID
dsUsers. Writexml ( strPath & "\UserInfo.xml")
End Sub |
بازيابی اطلاعات کاربران از يک
Data Set
بمنظور بازيابی اطلاعات کاربران از فايل XML ، از روتين
GetUIserData برای ايجاد يک Data
Set از فايل XML استفاده می گردد . در
ادامه ، می توان با استفاده از متد Find بمنظور بازيابی
سطر مرتبط با UserID استفاده نمود . روتين
GetUserInfo ( جدول زير) ، اطلاعات
کاربر را از Data Set بازيابی و با استفاده از آن
، کنترل های سرويس دهنده موجود بر روی يک فرم وب را مقداردهی می نمايد .
VB.NET |
Sub GetUserInfo (
ByVal UserID As String )
Dim dsUsers As Data.DataSet = GetUserData (
)
Dim rowUser As Data.DataRow =
dsUsers.Tables("user").Rows.Find(UserID)
If rowUser Is Nothing Then
Exit Sub
txtFirstName.Text =
rowUser.Item("FirstName")
txtLastName.Text =
rowUser.Item("LastName")
txtStreet.Text = rowUser.Item("Street")
txtCity.Text = rowUser.Item("City")
drpstate.Selected.Item.Text = rowUser.Item("State")
txtZip.Text = rowUser.Item("Zip")
End Sub |