2010-06-29 1 views
3

나는 PHP로 사용자 로그인 시스템을 만들면서 놀고있다.session_set_save_handler를 사용하거나 사용하지 않으려면?

나는 이것을 접근하는 방법으로이 기사 (http://www.evolt.org/node/60384)를 연구 해왔다.

위 기사에서 작성자는 $ _SESSION과 사용자 정의 데이터베이스 테이블을 조합하여 사용자 정보를 저장합니다. 그러나

...

는 또한 기본적으로 데이터베이스를 사용하는 PHP 세션을 구성하는 session_set_save_handler를 사용하는 것이 좋습니다 수많은 기사를 가로 질러왔다. (나는 더 새로운 기술이라고 생각합니다.)

나는 회의 데이터를 기록하기 위해 데이터베이스에 "activeUsers"테이블을 설정하는 것을 계획하고 있는데, session_set_save_handler를 사용하는 것이 더 합리적입니까? (어떤 세션 정보를 저장하기 위해 데이터베이스를 사용하고있는 것처럼 보입니다. 파일 시스템 세션을 사용하지 않을 수도 있습니다.)

PHP 세션을 기본 파일 시스템 형태로 유지 한 다음 x 검사 사용자 정의 db 테이블에 대한 사용자 로그인?

귀하의 도움에 미리 감사드립니다.

답변

2

데이터베이스에 세션 데이터를 저장하는 것은 처음에는 약간 까다로울 수 있지만 일단 클래스 또는 기능을 설정하면 파일 시스템 저장소보다 몇 가지 장점이 있습니다. 문제는 시스템에 이러한 장점이 필요한지 여부입니다. 데이터베이스에 세션 데이터를 저장하는 가장 일반적인 이유는 다음과 같습니다.

보안 : 공유 호스팅을 사용하는 경우 세션 데이터는 다른 사용자가 액세스 할 수있는 디스크 영역 체계. 이는 응용 프로그램의 보안 위험 요소가 될 수 있습니다.

확장 성 : 응용 프로그램이 둘 이상의 서버 (서버 팜, instance_ 등)에서 처리되는 경우 동일한 서버에서 처리 될 수있는 동일한 클라이언트의 여러 요청이 각각 동일한 . 세션 데이터가 데이터베이스에있는 경우 세션 데이터는이해야 할 매우 쉽습니다

성능 :.. 파일 시스템 스토리지를 통해 성능 향상을 제공 할 수 있습니다, 그러나 이것은 크게 서버 구성에 의해 영향을 받는다 데이터베이스 저장

DB 상호 작용 : 세션 데이터의 역할과 응용 프로그램에서 사용하는 방법에 따라 세션 데이터와 관련 정보가 모두 데이터베이스에 있으면 쉽게 검색 할 수 있습니다.

기타 고려해야 할 사항은 IP 주소, 로그온 및 로그 오프 시간 등과 같은 추가 정보를 저장하여 세션 정보를 향상시킬 수 있다는 것입니다. 이런 종류의 정보는 세션 도용을 막으려 고 할 때 유용 할 수 있습니다.

확장 성 문제 이외에, 나는 그것이 모두 주관적인 것이라고 생각합니다. 데이터베이스 세션 저장소를 구현하는 데 필요한 추가 작업을 가능한 한 비중있게 수행해야합니다.

+0

감사합니다. Mike for the response. 그 4 가지 이유를 살펴보면 그 중 아무 것도 내 경우에 적용되지 않습니다. 따라서 기존 세션 사용에 대해서는 아무런 걱정이 없습니다. * * 제외하고 - 어쨌든 db 테이블 "activeUsers"를 만들 계획입니다. 어떤 사용자의 '세션'정보가 어느 쪽이든 데이터베이스로가는 경우 세션이 데이터베이스를 기본적으로 사용하게하는 것이 더 합리적이라면 여전히 명확하지 않습니다. – Travis

+1

@Travis : 세션 데이터를 데이터베이스에 저장해야하는 것처럼 들리지는 않지만, 애플리케이션을 종료하면 애플리케이션이 조금 더 깨끗해질 수 있습니다. 자신의 핸들러를 작성하고 싶지 않으면 [Pear HTTP_Session2] (http://pear.php.net/package/HTTP_Session2) 패키지를 사용해보십시오. – Mike

1

사용하는 경우 자신의 가비지 수집기를 만들어야합니다.

관련 문제