문제

나는 사용자가 오랫동안 로그인을 유지하도록 허용하고 싶지 않았으므로 "날 기억해" 특징. 나는 그것이 어떻게 이루어 졌는지 생각하기 시작했고 설명을 원한다.

현재 세션을 데이터베이스에 저장하고 있습니다. 항상 나를 당황하게 한 것은 쿠키를 명시 적으로 설정하지 않더라도 내 브라우저에 배치되는 방법이었습니다. 세션은 세션이고 쿠키는 쿠키이기 때문에 약간 혼란스러워합니다. 세션이 쿠키를 어떻게 설정하는지 모르겠습니다.

또한 사용자를 로그인하기 위해 세션 배열에서 다른 세션 변수를 단순히 설정하면 충분할 것인지, 쿠키를 설정해야합니까?

도움이 되었습니까?

해결책

항상 나를 당황하게 한 것은 쿠키를 명시 적으로 설정하지 않더라도 내 브라우저에 배치되는 방법이었습니다.

세션 핸들러는 어떤 세션이 어떤 사용자에 속한 지 식별해야합니다.

대부분의 세션 라이브러리는 쿠키를 설정하여이를 수행합니다.

() 세션 배열에서 다른 세션 변수를 설정하여 사용자 로그인을 유지하기에 충분하거나 쿠키를 설정해야합니까?

대부분의 세션 라이브러리가 설정되었습니다 세션 쿠키. 이들은 지정된 만료 시간이없는 쿠키입니다. 브라우저가 닫히면 만료되고 "기억"기능을 구현하기에 충분하지 않습니다 (브라우저 재시작을 통해 지속될 것으로 예상되므로 명시적인 만료 시간이 있어야합니다).

다른 팁

세션 데이터를 데이터베이스에서 다시 가져 오려면 키가 필요합니다. 이것을 세션 ID라고합니다.

세션 ID는 어딘가에 저장해야합니다. 클라이언트가 다시 게시하거나 클라이언트의 쿠키에 게시하는 URL 문자열의 일부로. 요청이 게시되면 세션은 쿠키에서 값을 읽고 세션 스토리지에서 철회 할 레코드를 알고 있습니다.

이것은 자동으로 발생합니다.

세션을 사용해야하는 유일한 이유는 유지하려는 데이터가 4KB보다 큰 경우 (브라우저 제한)입니다. 또는 서버에서 데이터를 가져 오는 데 필요한 시간이 세션 스토리지에서 읽는 것보다 큰 경우.

저장중인 데이터의 양이 4KB 미만인 경우 쿠키에서 처음 설정하는 것이 좋습니다. 일반적으로 사용자 ID, 사용자 이름 및 기타 몇 가지 속성과 같은 것을 저장합니다. 쿠키 값을 검사하는 것은 사소한 일 이므로이 정보는 고객에게 가기 전에 암호화해야합니다.

또 다른 것은 원래 소스에서 필요한 데이터를 가져 오는 쿼리 시간이 작 으면 세션에 배치하는 대신 그렇게하도록 선택합니다. 이렇게하면 모든 페이지로드 대신 실제로 필요할 때만 얻을 수 있습니다.

쿠키와 세션의 관계 설명 :

PHP는 쿠키를 사용하여 각 사용자의 세션을 고유하게 식별합니다. 서버에서 파일을 요청할 때마다 쿠키가 전송되기 때문에 이것이 유일한 방법입니다. 세션 식별자 인 쿠키에서 토큰을 사용하여 PHP는 TMP 디렉토리를 찾아 세션이 존재하는지 확인합니다. 세션이 존재하면 변수는 올바른 파일에서로드되며 해당 세션의 변수에 액세스 할 수 있습니다.

따라서 쿠키는 어떤 사용자가 어떤 세션을 사용하는지 식별하는 데 필요한 세션 식별자를 저장합니다. 사람들이 다른 사람의 세션 식별자를 사용하기 위해 쿠키 식별 세션을 변경할 수있을 때 세션 납치가 발생하는 방법입니다.

기본 PHP 세션 구현은 쿠키를 설정합니다. 이것을 변경하고 쿼리 문자열에 세션 ID 값을 전달할 수 있지만 권장하지 않습니다. 쿠키를 사용하지 않습니다. PHP는합니다. 쿠키에 저장된 세션 ID 값을 참조하여 세션 데이터에 대한 조회를 수행합니다.

또한 사용자 로그인을 유지하기 위해 세션 배열에서 다른 세션 변수를 단순히 설정하는 경우에도 충분하거나 쿠키를 설정해야합니까?

사용자가 브라우저를 닫으 자마자 세션이 사망하고 쿠키가 삭제됩니다. 나는 어떤 메커니즘이 세션 값을 유지하기 위해 종료되는 것을 믿지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top