ورود

نسخه کامل مشاهده نسخه کامل : تشخیص کاربر مهمان و کاربر عضو سایت



Cyberlife
02-05-2009, 10:39
من میخواستم به سایتی که مشغول طراحی آن هستم امکانی اضافه کنم که کاربری که وارد سایت میشه اگه این کاربر تازه وارده یا برای اولین بار هست که وارد سایت شده پیغامی روی صفحه نمایش داده بشه که شما اولین باره وارد این سایت میشوید و برای بهره مندی از امکانات سایت باید عضو سایت بشید و برای کاربران عضو سایت این پیغامو نشون نده .

as13851365
02-05-2009, 11:29
برای این کار از کوکی استفاده می کنند که در سایت نمونه تایپیک های زیادی در این باره همراه با کد و آموزش هست اگه جستجو کنید به نتیجه می رسید

در ضمن قبل از زدن تایپیک جدید بهتر است که جستجو کنید اگر به نتیجه نریسیدید سوال را مطرح کنید تا دوستان راهنمایی کنند
با تشکر

Cyberlife
02-05-2009, 13:01
ببخشید حوصله نداشتم بگردم ، اگه میشه لینک اون تاپیکها رو برام بذارید .

Cyberlife
02-05-2009, 22:54
بالاخره چکار کنم ، به کدوم قسمت باید برم ؟

Cyberlife
03-05-2009, 19:53
گشتم ولی به نتیجه ای نرسیدم ، اصلا نمیدونم باید در قسمت جستجو چی بنویسم

as13851365
04-05-2009, 07:12
ببخشید که دیر جواب می دم شرمنده

حالا شما می خواهید با چه زبانی باشه با PHP و یا با ASP.net ؟

برای جستجو هم بهتر است که کلمه "کوکی" را جستجو کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Cyberlife
04-05-2009, 13:36
دوست عزیز یک دنیا ممنون ، من برای زبان asp.net میخواستم البته برای Php هم به کارم میاد .

as13851365
04-05-2009, 16:50
این مقاله ای است که من قبلا ذخیره کرده بودم ( متاسفانه منبع ، چیزی ازش ندارم )

در اين مقاله ابتدا به بررسي کوکي‌ها (Cookies) پرداخته و سپس جلسات (Sessions) را بررسي خواهيم کرد. به دليل نزديکي بسيار زياد اين دو مفهوم تصميم گرفتم همه آنها را در يک مقاله جمع‌آوري کنم. اگر مفاهيم فوق را به درستي درک کنيد و طرز استفاده از آنها را ياد بگيريد، مي توانيد به قدرت برنامه‌هاي کاربردي وب خود بيفزاييد. اما استفاده نابجا از اين مفاهيم در وب سايتهاي مختلف مي تواند به شدت روي عملکرد سايت تاثير گذاشته و از مخاطبان و کارايي آن بکاهد. در نتيجه با مطالعه اين مقاله در مورد اين دو مفهوم، بايد بتوانيد تصميم بگيريد که کداميک براي وب سايت شما مناسب‌تر مي باشد. در هر حال مثال‌هايي را در اين مقاله خواهيد ديد که به طور حتم به شما کمک زيادي خواهند کرد. لازم به ذکر است که بيشتر سعي در انتقال مفاهيمي کرده‌ام که پايه کار نمي باشند و سعي کردم به بيان نکاتي بپردازم که راحت پيدا نمي‌شوند.


کوکي‌ها (Cookies)
استفان والتر در کتاب ASP.NET Unleashed در ابتداي بخش کوکي‌ها اينگونه مي‌گويد: "پروتکل HTTP هيچ امکاني را در اختيار وب سرور قرار نمي‌دهد تا بتواند به کمک آن تشخيص دهد درخواست جديد از همان مرورگري صادر شده که در خواست قبلي را فرستاده يا از مرورگر ديگري آمده است. از اين جهت به HTTP صفت ناپايداري (Stateless) را ميدهند. از نقطه نظر وب سرور هر درخواستي که براي دريافت يک صفحه صادر شده است از طرف کاربري جديد ارسال شده است." اين به طور قطع آن چيزي نيست که ما مي خواهيم! وقتي مي‌خواهيم اطلاعات کاربر را در هر صفحه به او نشان بدهيم (از قبيل شناسه کاربري، کلمه عبور، سبد خريد و...) بايد بتوانيم وضعيت آن را حفط کنيم يکي از راههاي بسيار خوب در اين زمينه استفاده از کوکي‌ها مي‌باشد.

اولين بار Netscape کوکي‌ها را در مرورگر خود به کار برد و به تدريج کنسرسيوم وب (W3C) نيز آن را پذيرفت و امروزه اکثر مرورگرها از کوکي‌ها پشتيباني مي کنند. بر اساس مستندات اوليه Netscape، يک کوکي نميتواند حجمي بيشتر از 4 کيلوبايت داشته باشد و با بستن صفحه مرورگر کوکي‌ها نيز از بين مي روند. البته نگران نباشيد اينها کوکي‌هايي هستند که پارامتر Expires آنها تنظيم نشده است. اما اگر اين پارامتر را تنظيم کنيد، کوکي‌ها باقي مانده و دائمي مي شوند. اما تا کي؟ تا آن تاريخي که در خاصيت Expires تنظيم کرده‌ايد. مرورگرهايي که مي توانند با کوکي‌ها کار کنند داراي چند فايل ويژه مي‌باشند که در ويندوز به آنها فايل‌هاي کوکي و در مکينتاش فايل‌هاي جادويي مي گويند. کوکي‌ها از طريق هدرهاي HTTP بين مرورگر و سرور جابجا مي شوند. سرور با استفاده از هدر Set Cookie يک کوکي جديد ايجاد کرده و در درخواست‌هاي بعدي اين کوکي به سرور فرستاده مي شود.

در مقاله‌اي از سايت ASPFREE در مورد خواندن و نوشتن کوکي‌ها اينگونه نوشته شده است: "براي نوشتن کوکي يک شيئ جديد [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] بسازيد و مقدار يک رشته را به آن اختصاص دهيد (به خاصيت Value آن) و سپس متد ()Add را در Response.Cookies فرا بخوانيد. شما همچنين مي توانيد مقدار Expires را به يک مقدار تاريخ تغيير دهيد تا زمان انقضاء براي کوکي‌تان تايين کرده باشيد."

بايد توجه داشته باشيد که کوکي‌ها فقط مقادير رشته‌اي را ذخيره مي کنند و براي نوشتن مقادير ديگر در کوکي‌ها بايد هر آنها را به يک رشته تبديل کنيد. اين کد از سايت CodeToad براي يادگيري نحوه استفاده کوکي‌ها بسيار مناسب مي باشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به دلايل امنيتي شما مي‌توانيد فقط کوکي‌هايي را بخوانيد که از يک دامنه آمده باشند. همچنين ممکن است شما نياز به کوکي‌هايي داشته باشيد که چند آيتم را در خود نگهداري کنند، يک مثال براي اين کار در زير مي بينيد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

يک مثال درباره کوکي‌هاي تو در تو به زبان VB.NET:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

جدول زير بعضي از خصوصيات پيشرفته کوکي‌ها را نمايش مي‌دهد:
خاصيت
توضيحات


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دامنه‌اي که محدوده کوکي را تعيين مي کند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مسير منتسب به کوکي.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار بوليني که تعيين مي کند آيا کوکي بايد فقط روي يک اتصال رمز شده ارسال گردد يا نه؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار بوليني که تعيين مي کند که آيا کوکي مربوط به يک کوکي ديکشنري است يا نه؟



بطور خلاصه، کوکي‌ها چه خوبيهايي دارند؟ اشغال فضا روي کلاينت که باعث کاهش ترافيک و اشغال فضا روي سرور مي شود و اطمينان کار. کوکي‌ها چه بديهايي دارند؟ بعضي از مرورگرها از کوکي‌ها پشتيباني نمي کند، بعضي از کاربران کوکي‌ها را پاک مي کنند يا نمي پذيرند و اين که فقط داده نوع رشته‌اي را ذخيره مي کنند.


جلسات (Sessions)
فريم ورک دات نت براي رد گيري حرکت کاربر ما را تنها نگذاشته و يک امکان خوب به نام Session State را در اختيار ما قرار داده است. به طور پيش فرض وقتي کاربر اولين بار صفحه‌اي را از يک وب سايت ساخته شده با ASP.NET درخواست مي کند يک کوکي جلسه به نام ASP.NET_SessionID ساخته شده و به مرورگر او ارسال ميشود. با اين کار ASP.NET قادر به پيگيري کاربر شده و ميتواند در درخواست‌هاي بعدي او را شناسايي کند.

بر اين اساس در ASP.NET يک شيء به نام Session قرار داده شده است که ميتوانيد از آن براي نگهداري اطلاعات مربوط به هر کاربر استفاده کنيد. براي مثال دستور زير يک آيتم با نام MyItem ايجاد کرده و Hello را به آن نسبت ميدهد:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


هنگام کار با Sessionها بايد به نکات زير توجه کنيد:

1 - هر Session اگر کارير مرورگر را ببندد يا 20 دقيقه از سرور درخواست نکند از بين مي رود.

2 - Session هر کاربر جدا از Session بقيه کاربران است.

3 - در Session بر خلاف کوکي‌ها مي توان شيئ هم ذخيره کرد.

جدول زير بعضي از خصوصيات و متدهاي شيئ Session را نمايش ميدهد:
خاصيت/متد
توضيحات


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پاک کردن Session


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پاک کردن تمام Sessionها


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ID منحصر به فرد جلسه فعلي را برميگرداند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Session فعلي را خاتمه ميدهد. اگر کاربر پس از دستور فوق درخواست يک صفحه جديد کند به عنوان کاربر جديد در نظر گرفته مي شود.


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



نکته: از طريق فايل web.config نيز مي‌توان مهلت ختم جلسه را تغيير داد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


Eventها يا وقايع جلسه‌ها دو مورد هستند: Session_Start و Session_End. که Session_Start وقتي رخ مي دهد که جلسه آغاز و Session_End وقتي رخ مي دهد که جلسه خاتمه پيدا کند. اين Eventها را بايد در فايل Global.asax تعريف کرد.

در زير يک مثال عملي از اين رويدادها را خواهيد ديد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بطور کلي براي نگهداري مقادير Sessionها در ASP.NET سه روش وجود دارد: درون پروسه (In Process)، ذخيره در سرويس ويندوز و ذخيره در SQL Server.

Sessionها به طور پيش فرض در داخل پروسه مديريت مي شود و تمام آيتم‌هايي که در Sessionها مي‌سازيم در همان پروسه وب سرور ذخيره مي شوند. مهمترين مشکل اين روش اين است که اگر به هر دليل سرور از کار بيفتد و يا Web Applicationما دستکاري شود، تمام داده‌ها از بين ميرود و از طرف ديگر بسط پذيري را در سايت محدود مي کند و نمي توان آن را به اشتراک گذاشت.

اما با استفاده از تکنيک ذخيره در پايگاه داده SQL Server مي‌توان حتي در صورت از کار افتادن سرور نيز اطلاعات را حفظ کرد. تعريف اشياي ضروري در SQL Server به منظور مديريت داده‌هاي جلسه با اجراي بچ فايل InstallSqlState.sql صورت مي گيرد. بعد از اين کار بايد فايل web.config را نيز به شکل زير تغيير داد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Cyberlife
04-05-2009, 21:54
دیگه بهتر از این نمیشه ، از شما بابت زحمتی که کشیدیدممنونم .:33::16::26::42::12: