2014-06-14 3 views
0

나는 PHP에서 '장바구니'를 다루려고하고 있지만, 아직이 모든 것을 처음 접했을 때 나는 더 잘 알고있는 사람들로부터 최상의 접근법을 찾고 싶었다. .영구 데이터를위한 세션 및 쿠키 사용하기

사용자가 로그인 또는 체크 아웃하지 않은 경우 며칠 동안 사용할 수있는 항목을 장바구니에 추가하려고합니다. zavvi.com을 예제로 사용하여 복제 방법을 시도 할 수 있습니다.

브라우저가 열려있는 동안에 만 세션 데이터를 사용할 수 있으며 브라우저를 닫으면 서버의 메모리에서 세션 데이터가 삭제된다는 것을 알고 있습니다. 쿠키가 클라이언트에 저장되어 정의 된 만료 날짜와 함께 더 많은 영구 데이터를 얻을 수 있음을 이해합니다.

그러나 예를 들어 Zavvi를 사용하면 쿠키가 어떻게 작동하는지 이해할 수 없습니다. 아마도 'ElysiumBasketzavvi_V6'이라는 쿠키가있어 바구니의 내용을 저장하고있을 것입니다. 하지만 쿠키의 콘텐츠 (예 : MjI1MzM3NjI4)는 일종의 암호화처럼 보입니다.

누군가가 이벤트 순서, 세션 ID를 사용할시기 및 저장하고 바구니 내용을 검색하여 Zavvi와 같은 방식으로 작동하도록하는 방법에 대해 몇 가지 사실을 알려 주시면 매우 감사드립니다. 그것이 어떻게 이루어져야하는지입니다.

+1

쿠키의 코드는 무엇입니까? 어떤 식별자처럼 보입니다. 아마 DB 세션에 장바구니 세션을 저장하고 해당 코드를 조회로 사용할 수 있습니다. 쿠키는 공간이 제한되어있어 쉽게 지울 수 있기 때문에 이렇게 할 것입니다. –

+0

예. 정확하게. 데이터는 데이터베이스에 저장되며 해시를 통해 참조됩니다. 최소한 사용자가 로그인하지 않은 상태에서 ... 로그인하면이 데이터 항목을 사용자의 계정에 연결할 수 있으므로 세션을 통해 사용할 수 있습니다. –

+0

아, 말이 되네. 따라서 사용자가 바스켓에 무언가를 추가하고 데이터베이스에 기록하지만 사용자가 결코 사이트로 돌아 가지 않으면 예전 바구니 내용을 데이터베이스에서 정리하는 방법은 무엇입니까? – iltdev

답변

0

몇 가지 잘못된 가정이 있습니다.

나는 브라우저, 열려 있고 브라우저는

잘못된

을 닫을 때 서버의 메모리에서 삭제되는 동안 해당 세션의 데이터에만 사용할 수 있습니다 알고 있습니다. 세션 처리기를 구성하여 파일, 데이터베이스 또는 자체 드라이버를 구현할 수 있습니다.

쿠키는 디자인 상 적은 양의 데이터만을 저장할 수 있습니다. 식별자, 플래그 또는 작은 데이터 덩어리 및 좋아하는 것 이외의 응용 프로그램 데이터는 저장되어서는 안됩니다.

언제든지 세션으로 돌아가려면 서버와 클라이언트를 모두 올바르게 구성해야합니다. 가장 좋은 방법은 지속성을 위해 세션 저장소에 DB를 사용하는 것입니다. 세션 GC가 비활성 세션을 수집하지 않도록 설정하고 세션 쿠키에 충분한 만료 시간을 설정해야합니다.

그러나 사용자가 장바구니로 돌아갈 수 있기를 원하기 때문에 긴 세션 시간 초과를 통해 반드시 달성 할 필요는 없습니다. 대신 사용자 바구니의 내용을 데이터베이스에 유지할 수 있으므로 다음에 로그인 할 때 바구니 내용이 그대로 유지됩니다.

+0

감사합니다. @Marcell. 따라서 세션을 테이블에 저장하는 것이 가장 좋은 방법입니다. 이 자습서는 좋은 것처럼 보입니다. http://culttt.com/2013/02/04/how-to-save-php-sessions-to-a-database/ – iltdev

+0

아니요. 내가 제안한 바는 간단히 바구니 내용을 데이터베이스에 저장하고 사용자에게 다시 표시하면 작업을 수행 할 수 있다는 것입니다.반면에 등록되지 않은 사용자, 로그인 한 게스트가 아닐 경우 바구니 내용을 유지하려면 실제로 세션 db 저장소가 좋은 해결책이 될 수 있습니다. – marekful