2017-12-11 27 views
2

내 웹 사이트를 열고 사용자가 서비스에 가입하지 않은 경우에도 "장바구니"에 일부 항목을 추가하는 사용자에게 ID를 제공하려고합니다. 추가하기 만하면 체크 아웃을 원할 때 가입하십시오. 그리고 물건을 추가 한 후 계산대에 가지 않고 브라우저를 닫고 2 일 후에 돌아 오면 데이터베이스에서 이전 주문을 검색하고 싶습니다.데이터베이스에서 데이터를 기억하는 익명 사용자에게 ID를 부여하는 방법은 무엇입니까?

사용자에게 고유 한이 ID는 어떻게 사용자에게 제공하고 다음에 방문 할 때 기억합니까?

내가 쿠키를 사용해야한다고 가정하지만 얼마나 정확하게 알지 못합니까? 사용자가과 같이 카트에 뭔가를 실행 자바 스크립트를 추가 할 때

+1

쿠키 또는 html5 localstorage를 사용할 수 있습니다. – Niladri

+0

제가 말했듯이, 쿠키를 사용해야한다고 가정하겠습니다.하지만 어떻게 사용합니까? asp.net에서 어떻게 사용합니까? –

+0

웹 양식을 사용하고 있습니까? – Niladri

답변

0

나는 쿠키와 데이터베이스를 사용하여 비슷한 일을했다. 따라서 C#에서는 Basket 테이블을 가질 수 있으며이 테이블에는 ProductId 열과 함께 UserId 열이 있습니다. 그런 다음 컨트롤러에서 UserId가 데이터베이스에있는 사용자 바구니를 가져옵니다.

public ActionResult Basket() 
{ 
    //Getting the cookie which has the name "userId" and assigning that to a variable. 
    string userId = Request.Cookies.Get("userId").Value; 
    var basket = _context.Basket.Where(x => x.UserId == userId);  
    return View(basket); 
} 

:

다음
string cookieValue = Guid.NewGuid().ToString(); 
//Creating a cookie which has the name "UserId" 
HttpCookie userIdCookie = new HttpCookie("userId"); 
userIdCookie.Value = cookieValue; 
//This is where you would state how long you would want the cookie on the client. In your instance 2 days later. 
userIdCookie.Expires = DateTime.Now.AddDays(3); 
Response.SetCookie(userIdCookie); 

컨트롤러에서 쿠키를 얻을 :

쿠키를 설정 내가 Request.Cookies.Get을 사용했다 ("userId를") 때문에 여기 Response.Cookies.Get ("userId")를 사용하고 "UserId"쿠키가 존재하지 않으면 쿠키가 생성됩니다.

+0

"customers"테이블에 연결된 "orders"테이블이 이미 있습니다. 임시 고객을 만들고 그 고객의 쿠키에 임시 고객 데이터를 저장하려고합니다. –

+0

지금 시도해보십시오. 어떻게하는지 알아 냈습니다. –

+0

약간의 개조 후에 완벽하게 작동했습니다. 먼저 쿠키를 얻기위한 작은 조건을 추가했습니다. 아무 것도 얻지 못하면 쿠키를 할당합니다 (그렇지 않으면 Homepage가 열릴 때마다 새로운 사용자를 만들었습니다). 고맙습니다! –

0

: 당신이 장바구니에 무언가를 추가 할 때마다 지금

var storedId = localStorage.getItem('myId'); 

if(storedId == null) 
{ 
    storedId = parseInt(Math.Random * 1000); // or better, use UUID generation from here: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript 

    localStorage.setItem('myId', storedId); // for future reference 
} 

, ID를 게시, 예를 들어,

컨트롤러 :

[HttpPost] 
public ActionResult AddToCard(string userId, string productId, int quantity) 
{ 
    /// perform your saving to db 
} 

아약스 (또는 어떤 프레임 워크 사용이) :

$.post('/somewhere', {userId: storedId, productId: 'whatever', quantity: 1});