2014-07-06 3 views
0

생성 된 세션과 세션 ID로 쿠키를 설정하고 다음 번에 페이지를 방문 할 때 쿠키에서 세션을 검색 할 수 있습니까? 내 로그인 페이지에서 나를 기억하는 버튼을 만들려고 노력 중이며 이것이 이렇게 할 수 있는지 궁금해했습니다.쿠키에서 세션 설정하기 및 쿠키에서 세션 검색하기 PHP

+0

체크 박스는 대개 서버가 세션을 무효화하기 전에 대기하는 시간을 나타냅니다. 선택되어 있는지 확인하고 더 오랜 시간을 주기만하면됩니다. [관련 질문] (http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes?rq=1)은 30 초 후에 세션을 만료시킬 수있는 방법을 보여줍니다. 의사록. 결론/최선의 해결책을보십시오. 세션 내에서 값을 저장하여 그들이 나를 기억하는지 여부를 확인할 수 있습니다. 선택에 따라 30 분 또는 5 시간 내에 해당 세션을 삭제할 수 있습니다. –

+0

@DaveChen 답장을 보내 주셔서 감사합니다. 나는 ini_set ('session.gc_maxlifetime', '31536000');을 방문했습니다. 저는 1 년 동안 세션을 열어 두어야한다고 생각합니다. –

+0

질문을 오해하지 않은 경우 : 세션 만료 기간은 나를 체크 한 사용자와 체크하지 않은 사용자 사이에서 다양하게하는 것입니다. 이 설정은 모든 세션을 변경합니다. 사용자의 선택에 따라 세션 수명을 변경하지 않으시겠습니까? 이 경우 나는 ($ _ SESSION [ 'LAST_ACTIVITY']) && (time() - $ _SESSION [ 'LAST_ACTIVITY']> 1800)) {'의 방향으로 당신을 가리키고 싶다. 첫 번째 대답은 '결론'입니다. –

답변

1

"내 계정 정보 기억"기능을 구현하기 위해 PHP 세션을 연장하지 마십시오. 세션을 다시 초기화하는 것이 훨씬 좋습니다.

  1. 사용자가 체크 가진 웹 사이트에 올 때 "기억하기"체크 박스, 웹 사이트 고유 코드 (꽤 긴 임의의 문자열)을 생성하고 저장합니다 지역 :

    가장 일반적인 시나리오는 이것이다 쿠키 및 서버 측 데이터베이스.

  2. 사용자가 브라우저를 닫으면 세션이 닫히지 만 쿠키는 유지됩니다.

  3. 다음 번에 사용자가 서버를 방문하면 데이터베이스에서 쿠키를 찾아서 사용자/암호 쌍 대신 코드를 기반으로 인증합니다.

은 좋은 출발점이 될 수 있지만뿐만 아니라 여러 가지 향상된 기능이 가능한이 있습니다 것입니다 :

  1. 당신은 고유 코드와 함께 쿠키에 사용자 이름을 절약 할 수있다. 이 쌍을 사용하여 인증하는 것이 안전하고 빠릅니다.

  2. 사용자의 IP를 데이터베이스에 저장할 수 있으므로 인증 데이터가이 IP에서만 작동합니다.

  3. 고유 한 코드를 생성하여 데이터베이스에 저장하는 대신 사용자 암호와 소금을 기반으로 해시 코드를 즉석에서 작성할 수 있습니다. 이렇게하면 데이터베이스가 쓰기 작업에서 제외됩니다. 보안/속도 요구 사항에 따라

이 시나리오의 변화가있을 수 있지만,베이스는 동일하게 유지 : 그가 돌아 오면 일단 쿠키, 그를 재 인증을 사용하여 사용자를 표시합니다.

관련 문제