جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


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

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image