PDA

View Full Version : سوال: بررسی وجود یا عدم وجود کوکی در کلاینت.



elham1611
دوشنبه 04 اردیبهشت 1391, 08:32 صبح
با سلام
اگر بخواهیم بفهمیم که در کامپیوتر کابر کوکی ما قرار دارد یا خیر باید چی کار کنیم؟
من از دستور if استفاده کردم ولی خطا میگیره.


if (Request.Cookies["test"].Value == null)

میخوام اگه کوکی وجود داره دیگه تولید نکنم و از همون قبلی استفاده کنم. ولی اگر نیست تولید کنم

d_derakhshani
دوشنبه 04 اردیبهشت 1391, 08:43 صبح
قسمت value رو بردارید.

if (Request.Cookies["test"] == null)

elham1611
دوشنبه 04 اردیبهشت 1391, 09:09 صبح
درست شد ممنون.
به نظر شما این طریقه ساختن کوکی بده که ترکیب تاریخ و زمان سرور رو به صورت یک رشته در بیاریم و در کوکی قرار بدیم ؟ یعنی سرعت رو ژایین میاره و ..؟

Server.HtmlEncode(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString()

d_derakhshani
دوشنبه 04 اردیبهشت 1391, 09:45 صبح
نه درست نیست. اگه دو کاربر در یک لحظه وارد سایت شن احتمال اینکه جفتشون در یک ثانیه باشن کم نیست و در نتیجه برنامه شما خطا میده. نمی دونم چرا اینکار رو می کنید. وقتی فردی وارد سایت میشه خود asp.net یک session id منحصر به فرد به اون میده که بتونه جلست مختلف رو اداره کنه. شما می تونید از همون session id استفاده کنید(البته به شرط اینکه session هاتون کانفیگ کرده باشید که با کوکی کار کنه). اما اگه بخواهید id مختلف ایجاد کنید از دستور ()Guid.NewGuid().ToString.Create استفاده کنید

elham1611
دوشنبه 04 اردیبهشت 1391, 10:27 صبح
ممنون.ولی برای اینکه بار سرور زیاد نشه و کاربر در ورود بعدی شناخته بشه احتیاج به کوکی دارم.
در حقیقت هدفم اضافه کردن کالا به لیست کالاهای مورد علاقه کاربر هستش . کاربرانی که ثبت نام نکرده اند رو باید با کوکی شناسایی کنم.
این دستور ی که گتید تا Guid.NewGuid میاره و قسمت ToString.Create رو نمیشناسه چرا؟ و خطا میده در نتیجه :متفکر:


HttpCookie ctest = new HttpCookie("test", Guid.NewGuid());

elham1611
دوشنبه 04 اردیبهشت 1391, 10:39 صبح
Guid gu = Guid.NewGuid();

HttpCookie ctest = new HttpCookie("test",gu.ToString());

Response.Cookies.Add(ctest);
از این راه رفتم جواب داد ولی هرچی سرچ زدم نفهیدم این Guid چی هست.؟ یعنی یه چیزی مثل session میمونه که منحصر به فرد از طرف سرور تولید میشه؟

d_derakhshani
دوشنبه 04 اردیبهشت 1391, 12:18 عصر
کد قبلی درست بود فقط شما جا به جا می نوشتید.
Global Uniuqe ID یا همون GUID کلاسی برای تولید یک آی دی 128 حرفی(بایتی) به صورت یکتا هست. یعنی امکان نداره که هیچ وقت دو تا ID یکسان تولید کنه.(البته بحث احتماله). این کلاس یکی از کلاس های .Net و ارتباطی با خود ASP.Net و session نداره