2009-08-03 6 views
4

IPB 포럼의 작동을 파악하려고합니다.쿠키가없는 상태 유지

나를 기억한다면, 브라우저를 닫았다가 다시 열어도 로그인 상태가 유지됩니다.

서버가 설정 한 유일한 쿠키가 세션이 끝날 때 (예 : 브라우저를 닫을 때) 만료 될 수있는 방법을 연습하려고합니다. 그렇다면 서버는 쿠키를 사용하지 않고 어떻게 세션을 다시 시작할 수 있습니까?

편집 : 세션 ID 쿠키는 세션이 끝날 때까지 만료되도록 설정되어 있으며 세션이 끝날 때 쿠키를 삭제하도록 브라우저를 설정했습니다.

즉, 브라우저를 닫으면 (세션이 종료 될 때) 쿠키가 삭제되어야합니다.

다른 브라우저에서 동일한 사이트를 열면 브라우저를 닫을 때 반드시 세션을 다시 시작해야합니까? 그러나 이것은 일어나지 않습니다.

대신 원래 브라우저를 열면 세션이 다시 시작됩니다.

유일한 다른 쿠키 세트는 pass_hash라는 쿠키입니다.이 쿠키는 생성되는 즉시 만료되며 페이지가로드 될 때마다 서버에 의해 전송됩니다. 그래서 그것은 인증에 사용되지 않을 것입니다.

답변

0

방금 ​​쿠키가 누락되었거나 (만료되었을 때 잘못 읽었거나 오해 한 것 같습니다.) 다른 대안은 원격 주소를 DB에 저장하고 자동으로 새 세션을 만드는 것입니다. 두 번째 방문. 그러나 이는 보안 측면에서나 NAT 등으로 인해 다소 나빠질 수 있습니다. 따라서 이것이 IPB가하는 일이라는 것을 의아하게 생각합니다.

+0

나는 어떤 쿠키도 놓치지 않았습니다 ... 나는 그들이 만들어지고 확인하려고 만료 날짜를 확인하면서 모니터링했습니다. –

1

일반적으로 브라우저를 닫으면 쿠키가 계속 남습니다. PHP를 사용하는 경우 set_cookie's 옵션을 확인하거나 세션을 사용하는 경우 session 영역을 확인하십시오.

// Set Cookie 
setcookie($name, $value, $expire) 
// $expire is the time in seconds since Unix Epoch (see [time()][3]) it will stay alive 
// Session 
session_set_cookie_params($lifetime) 
// $lifetime is the seconds it will stay alive in seconds 
1

브라우저 창이 닫힐 때 세션 정보가 반드시 파괴되는 것은 아닙니다. 예를 들어 PHP에서는 세션 정보를 데이터베이스에 저장하도록 선택할 수 있으며 브라우저가 닫히고 원래 세션이 종료 된 후에도 세션 정보를 유지할 수 있습니다.

내가 생각할 수있는 또 다른 방법은 Users 테이블에 사용자가 여전히 로그인되었다는 플래그를 설정하는 것입니다. 아마도 테이블에 logged_in이라는 필드가 있으며이를 true로 설정할 수 있습니다. 일정 시간이 지나면 다시 돌아 오지 않습니다. 다시 거짓으로 재설정됩니다.

+0

브라우저 창이 닫히고 세션 쿠키가 세션이 끝날 때 만료되도록 설정되어 있고 브라우저를 닫을 때 쿠키가 삭제되면 (세션을 종료합니다), 사이트를 열면 다른 브라우저 세션을 다시 시작해야합니까? 그렇지 않다면 왜 안됩니까? –

+0

그것이 어떻게 작동 할 수 있습니다. IP 주소와 로그인 한 시간과 함께 세션을 저장할 수 있습니다. 돌아올 때 IP를 확인하고 사용자 이름 및 마지막 로그인 시간과 일치시킬 수 있습니다 (참고 : 1 시간 이상 , 로그인 필요). 그러나 사용자가 로그 아웃 할 때이 필드 값을 삭제해야합니다. – mlevit

+0

왜 세션이 다른 브라우저에서 재개되지 않습니까? –

1

쿠키 이외의 세션 정보를 숨길 수있는 곳이 있습니다.

의 URL (http://example.com/app/234348738790/main)

는 GET 변수로 세션 키 (? SESS = 257,892,345)

게시물 변수 (입력 유형 = '숨겨진')와 같은 세션 키

에서 세션 키 브라우저에서 로컬 저장소에서

저장을 위의 함께 다시 서버에 세션 정보를 전달하기 위해 자바 스크립트

사용.

+0

IPB가 작동하는 방식을 이해하는 데있어서 문제는 이러한 방법 중 어느 것도 작동하지 않는다는 것입니다. 그것은 별도의 상태를 저장하는 일부 사용자 정의 숨겨진 자바 스크립트가 아니라면 ... –

3

쿠키 대신 부적절한 대체 이미지 또는 이미지가 마지막으로 수정 된 시간 기록입니다. 서버는 타임 스탬프를 세션을 식별하는 값으로 설정하는 이미지를 제공 할 수 있습니다. 다른 페이지를로드 할 때 브라우저는 타임 스탬프 이후에 if-modified-now를 전송하고 사용자를 멀리합니다.

+1

+1 상자 밖 사고에 대한 – mlhDev

2

브라우저를 사용하십시오. localstorage 개체. 예 :

localStorage.setItem("lastname", "Smith"); 
var name = localStorage.getItem("lastname");