برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

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

مهمترین رسالت برنامه های کامپیوتری ارتباط با کاربران و پاسخگوئی به نیاز آنان با توجه به پتانسیل های پیش بینی شده در برنامه می باشد. شناسائی کاربران توسط برنامه های کامپیوتری می تواند زمینه ارائه سرویس ها و خدمات بهینه تری را فراهم نماید( ارائه سرویس ها و خدمات مشخص شده به گروهی خاص از کاربران )  . برنامه های وب نیز از این قاعده مستثنی نبوده و با توجه به ماهیت 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

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد