PDA

View Full Version : سوال: اضافه به سبد فروشگاه



mazaher5723
شنبه 17 خرداد 1393, 15:29 عصر
سلام دوستان
توی ساخت سایت فروشگاهی اقزودن به سبد توی کوکی ها اضافه بشه؟
یا نه راهکار دیگه ای هم دارید
ممنون میشم راهنماییم کنید

rezaei_y
شنبه 17 خرداد 1393, 17:24 عصر
میتونی توی دیتابیس هم ذخیره کنی ولی به نظر من کوکی بهتر

kohyar
شنبه 17 خرداد 1393, 17:53 عصر
دوستان کوکی مشکل امنیتی ایجاد میکنه.
اگر نیم خواهید تو دیتابیس ذخیره کنید به نظر من بهترین راه ایجاد یک آرایه دوبعدی در سشن هستش. چون اگر کاربر بعدی رو همون سیستم کاربر قبلی بشینه بعد از مدتی میتونه از طریق کوکی محتویات سبد سفارش کاربر قبلی رو بفهمه.

aroshanzamir
شنبه 17 خرداد 1393, 18:13 عصر
دوستان کوکی مشکل امنیتی ایجاد میکنه.
اگر نیم خواهید تو دیتابیس ذخیره کنید به نظر من بهترین راه ایجاد یک آرایه دوبعدی در سشن هستش. چون اگر کاربر بعدی رو همون سیستم کاربر قبلی بشینه بعد از مدتی میتونه از طریق کوکی محتویات سبد سفارش کاربر قبلی رو بفهمه.


دیجی کالا هم اگر اشتباه نکنم همین مشکل را داره

ذخیره در دیتابیس اصلا ارزشی نداره .. در مر حله ای که کاربر مشخصات خودش را وارد کرد در DB ذخیره بشه .....

aroshanzamir
شنبه 17 خرداد 1393, 18:24 عصر
من هم الان دارم رو یه فروشگاه کار می کنم
اطلاعات را دارم توی کوکی ذخیره می کنم و رمز نگاری را انجام میدم

خوب حالا یه مساله
به نظر من بهینه نیست که ما بخواهیم برای هر محصولی که کاربر خرید را میزنه ما یه کوکی ایجاد کنیم

فکر کنم بهینه این باشه که یک کوکی داشته باشیم که توش چندین محصول ذخیره بشه
...
یه چیز دیگه من هر کاری می کنم نمی تونم تو کوکی آرایه یا لیست یا دیکشنری ذخیره کنم ؟
میشه .TOstring f بزنی و تو کوکی ذخیره کنی ولی در زمان خوندنش به مشکل بر می خوریم
خطایی که میده میگه نمی تونم رشته را به لیست تبدیل کنم


if(Request.Browser.Cookies)
{
if(Request.Cookies["cart"]!=null)
{
HttpCookie cookie=Request.Cookies["cart"];
cookie.Values["Product"] += "Value/";
Response.Cookies.Add(cookie);
}
else
{
HttpCookie cookie = new HttpCookie("cart");
cookie.Values["Products"] = "Value";
cookie.Expires = DateTime.Now.AddMinutes(30);
Response.Cookies.Add(cookie);
}
}




بعدش تو خوندنش با Split / از هم جدا می کنم
البته رمز نگاری هم روش انجام میدم

خوب حالا چکار کنم که بتونم آرایه یا لیست را توی کوکی ذخیره کنم ؟

mamad_za
شنبه 17 خرداد 1393, 18:31 عصر
من هم الان دارم رو یه فروشگاه کار می کنم
اطلاعات را دارم توی کوکی ذخیره می کنم و رمز نگاری را انجام میدم

خوب حالا یه مساله
به نظر من بهینه نیست که ما بخواهیم برای هر محصولی که کاربر خرید را میزنه ما یه کوکی ایجاد کنیم

فکر کنم بهینه این باشه که یک کوکی داشته باشیم که توش چندین محصول ذخیره بشه
...
یه چیز دیگه من هر کاری می کنم نمی تونم تو کوکی آرایه یا لیست یا دیکشنری ذخیره کنم ؟
میشه .TOstring f بزنی و تو کوکی ذخیره کنی ولی در زمان خوندنش به مشکل بر می خوریم
خطایی که میده میگه نمی تونم رشته را به لیست تبدیل کنم


if(Request.Browser.Cookies)
{
if(Request.Cookies["cart"]!=null)
{
HttpCookie cookie=Request.Cookies["cart"];
cookie.Values["Product"] += "Value/";
Response.Cookies.Add(cookie);
}
else
{
HttpCookie cookie = new HttpCookie("cart");
cookie.Values["Products"] = "Value";
cookie.Expires = DateTime.Now.AddMinutes(30);
Response.Cookies.Add(cookie);
}
}




بعدش تو خوندنش با Split / از هم جدا می کنم
البته رمز نگاری هم روش انجام میدم

خوب حالا چکار کنم که بتونم آرایه یا لیست را توی کوکی ذخیره کنم ؟

دوست عزیز میشه کد رمزنگاریتون رو هم بزاری

aroshanzamir
شنبه 17 خرداد 1393, 18:49 عصر
public static string DecryptStringToBytes(byte[] result, byte[] Key, byte[] IV)
{
string PalinText = string.Empty;
using (RijndaelManaged rij = new RijndaelManaged())
{
rij.Key = Key; rij.IV = IV;
ICryptoTransform decryptor = rij.CreateDecryptor(rij.Key, rij.IV);
using (MemoryStream ms = new MemoryStream(result))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
PalinText = sr.ReadToEnd();
}
}
}
}
return PalinText;
}
public static byte[] EncryptStringToByte(string PlainText, byte[] Key, byte[] IV)
{
byte[] encrypted;
using (RijndaelManaged rij = new RijndaelManaged())
{
rij.Key = Key; rij.IV = IV;
ICryptoTransform cryptor = rij.CreateEncryptor(rij.Key, rij.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, cryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(PlainText);
}
encrypted = ms.ToArray();
}
}
}
return encrypted;
}



و این هم برای زمانی که از یک سرور برای سرویس دهی استفاده کنیم : و من از این برای رمز نگاری کوئری استرینگ یا کوکی ها که از جایگاه پایین تری برخوردار هستند استفاده می کنم :




namespace WebApplication_QueryString
{
public class EncryptionQueryString : StringDictionary
{
public EncryptionQueryString()
{ }
public EncryptionQueryString(string encryptedData)
{
byte[] rawData = HexEncoding.GetBytes(encryptedData);
byte[] ClearRawData = ProtectedData.Unprotect(rawData, null, DataProtectionScope.LocalMachine);
string stringdata = new ASCIIEncoding().GetString(ClearRawData);
int Index = 0;
string[] SplitData = stringdata.Split(new char[] { '&' });
foreach (string item in SplitData)
{
Index = item.IndexOf('=');
base.Add(HttpUtility.UrlDecode(item.Substring(0, Index)),
HttpUtility.UrlDecode(item.Substring(Index + 1)));
}
}




public override string ToString()
{
StringBuilder Content = new StringBuilder();
foreach (string item in base.Keys)
{
Content.Append(HttpUtility.UrlEncode(item));
Content.Append("=");
Content.Append(HttpUtility.UrlEncode(base[item]));
Content.Append("&");
}
Content.Remove(Content.Length - 1, 1);
byte[] EncryptData = ProtectedData.Protect(Encoding.UTF8.GetBytes(Conte nt.ToString()), null,
DataProtectionScope.LocalMachine);
return HexEncoding.GetString(EncryptData);
}
}




public class HexEncoding
{
public static string GetString(byte[] data)
{
StringBuilder Results = new StringBuilder();
foreach (byte item in data)
{
Results.Append(item.ToString("X2"));
}
return Results.ToString();
}
public static byte[] GetBytes(string data)
{
byte[] Results = new byte[data.Length];
for (int i = 0; i < data.Length; i += 2)
{
Results[i / 2] = Convert.ToByte(data.Substring(i, 2), 16);
}
return Results;
}
}
}

meysam99
شنبه 17 خرداد 1393, 19:01 عصر
شما بهتر هست که بجای استفاده از کوکی در بانک اطلاعاتی با سیشن مشخصات کاربر را ذخیره کنید . آن هم بصورت ناشناس وقتی که کاربر ثبت نام کرد این اطلاعات از ناشناس به کاربری تغییر وضعیت بده. این مدلی احتیاجی به کوکی نیست و امنیت اطلاعات هم بهتره. من از این روش در فروشگاه استفاده کردم و بسیار خوب بود

mazaher5723
شنبه 17 خرداد 1393, 22:20 عصر
مممنونم از لطفتون اما هایپرلینکی که گذاشتم توی دیتا لیستم و اونجا میزنه اضافه به سبد چطور اضافه به کوکی کنم؟
چه جوری میشه شماره کالامو توی دیتا لیست پاس بدم به تابعم تا توی کوکی اضافش کنن

alireza.zahani
یک شنبه 18 خرداد 1393, 02:01 صبح
از profile استفاده کنید بهتر نیست؟