ذخيره و بازيابی اطلاعات کاربران در برنامه های وب

مهمترين رسالت برنامه های کامپيوتری ارتباط با کاربران و پاسخگوئی به نياز آنان با توجه به پتانسيل های پيش بينی شده در برنامه می باشد. شناسائی کاربران توسط برنامه های کامپيوتری می تواند زمينه ارائه سرويس...
يکشنبه، 29 دی 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب
ذخيره و بازيابی اطلاعات کاربران در برنامه های وب

مهمترين رسالت برنامه های کامپيوتری ارتباط با کاربران و پاسخگوئی به نياز آنان با توجه به پتانسيل های پيش بينی شده در برنامه می باشد. شناسائی کاربران توسط برنامه های کامپيوتری می تواند زمينه ارائه سرويس ها و خدمات بهينه تری را فراهم نمايد( ارائه سرويس ها و خدمات مشخص شده به گروهی خاص از کاربران ) . برنامه های وب نيز از اين قاعده مستثنی نبوده و با توجه به ماهيت 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 ، امکان جستجو فراهم خواهد شد .بدين منظور ، مراحل زير را دنبال می نمائيم :
• کليک سمت راست بر روی عنصر مورد نظری که می خواهيم بعنوان فيلد کليد در نظر گرفته شود.انتخاب گزينه Add و در ادامه New Key . ويژوال استوديو ، جعبه محاوره ای Edit Key را نمايش خواهد داد .
• گزينه Dataset Primary Key را انتخاب و دکمه OK را فعال می نمائيم . بدين ترتيب ، امکان استفاده از متد Find مربوط به شی DataSet بمنظور بازيابی سطرهائی از Data set ، فراهم می گردد.

خواندن 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





نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط