2011-04-14 2 views
4

나는 등록 된 사용자의 사이트 환경 설정을 MySQL 데이터베이스에 저장하는 사이트를 가지고 있으며 등록되지 않은 사용자가 브라우저 쿠키를 사용하여 사이트 구성의 이점을 누릴 수 있도록이 사이트를 수정하려고합니다.PHP와 MySQL에서 쿠키 사용 - 좋은 방법?

일반적인 방법은 없나요? 고유 쿠키 해시가 방문자의 쿠키에 저장하고, 사이트 환경 설정은 게스트 사용자의 설정을 포함하는 JSON 인코딩 된 문자열입니다 무슨 어디

id 
unique_cookie_hash 
site_preferences 

: 내 생각은이 필드에 추가 데이터베이스 테이블을 만들 수 있었다. 따라서 사이트에 로그인하지 않은 사용자는 쿠키를 확인합니다. 쿠키가 존재하면 쿠키에 저장된 값을 통해 환경 설정을 시도합니다. 쿠키가 없거나 일치하는 것이 발견되지 않으면 사이트에서 쿠키를 만들고 일부 기본 설정 값을 지정합니다.

게스트가 변경하면 사이트는 unique_cookie_hash에서 UPDATE 쿼리를 실행하려고 시도합니다.

나는 이것이 작동 할 것이라고 가정하고있다. (그리고 그것은 대부분의 사이트가 그것을하는 방식이다.)하지만 나를위한 새로운 개념으로서 누군가가 좋은 튜토리얼이나 'got-yas'를 알고 있는지 궁금해하고 있었다. 이 방법으로

감사합니다.

답변

3

옵션을 JSON 문자열로 serialize하면 아무 것도 선택할 수 없다는 점에 유의하십시오.

그래서 색체 구성표 A와 같은 등록 된 사람의 수를 알고 싶다면 PHP로 모든 코드를 수행해야합니다 (적어도 성가신 방법은 아님).

+0

동의어, site_preferences를 별도의 열 또는 다른 테이블에 저장하는 것이 가장 좋습니다. site_preferences를 클라이언트 측에 저장하고 식별자를 저장 한 다음 ID가 쿠키에있을 때이를 찾지 않아도됩니다. –

+0

쿨, 고마워 Alex and Dylan! 개별 열을 사용하는 것을 고려하고 있지만 대부분의 설정은 표시 할 정보를 필터링하는 토글입니다. (약 30 개), 그 많은 진실/거짓 필드에 대해 무언가가 혼돈스럽게 중복되는 것처럼 들립니다. 그리고 향후 옵션을 추가하기 위해 쿼리 유지 관리가 조금 더 필요합니다. – coopertrooper

0

PHP에는 세션 관리를위한 자체 기능 세트가 있으며, 세션 처리를위한 대체 라이브러리가 있습니다. 예기치 않은 보안 고려 사항이있는 복잡한 문제이므로 먼저 조사하지 않고 자작 해결책을 시도하지 않겠습니다.

세션 정보를 안전하게 저장하는 방법을 살펴본 결과 사용자의 사이트 환경 설정을 유지할 수 있고 사용자가 계정에 로그인하면 저장된 기본 설정을 세션에 복사하면 사이트가 실제로 작동합니다 에.

+0

질문을 읽으셨습니까? –

-3

설정 수에 따라 다르지만 일반적으로 데이터베이스를 신경 쓰지는 않지만 쿠키에 설정을 저장하십시오.

+0

Col. Shrapnel의 회신을 보내 주셔서 감사합니다. 네, 그게 궁금 해서요. 사용자가 조회에 사용 된 해시 된 키를 잠재적으로 변경하고 설정 값을 자신의 기괴한 값으로 변경하려고 시도하지 않았기 때문에 즉시 데이터베이스를 포함하는 솔루션을 찾았습니다. 적절한 보안 검사를 받으면 이것이 문제가되지 않을 것이라고 확신합니다. – coopertrooper

+1

다른 브라우저/컴퓨터에서 설정을 유지하려는 경우 좋지 않습니다. – alex

+0

@alex 다른 무엇? –