2011-08-29 5 views
0

그래서 알고 싶습니다. 세션 파일을 조작하는 것은 대단히 어렵습니다. 그 일을하기 위해 내가 기대해야 할 나쁜 것들은 무엇입니까?세션 파일 조작하기

내 웹 사이트에 로그인 할 때마다 사용자가 세션 ID를 가져오고 ID가 DB에 기록됩니다. 그리고 사용자가 로그 아웃 할 때마다 DB 및 파일 시스템에서 해당 세션 ID를 삭제하고 게스트 모드에 대해 새 세션 ID를 재생성합니다.

은 어떻게 나쁜 :

@unlink(session_save_path().'/sess_'.$old_sess); 감사합니다.

+2

세션 파일은 PHP에 의해 자동으로 삭제되어야합니다. 즉, 스크립트에서 삭제해서는 안됩니다. 또한'@'는 사용하지 않는 것이 좋습니다. 빈 화면을 볼 때 아무것도 표시하지 않으려면 PITA를 사용하는 것이 좋습니다. – binaryLV

+0

'@'를 사용할지 여부는 상황에 따라 다릅니다. 나는 자기 자신에 의한 파일 조작 오류를 처리하기 위해'@'를 선호한다. –

+1

사실 상황에 따라 다르지만 필자가 작성한대로 그런 코드를 디버그하는 것은 PITA입니다. 오류보고가 최대로 설정된 경우에도 오류 로그에 아무 것도 표시되지 않고 [WSOD] (http://en.wikipedia.org/wiki/White_screen_of_death#PHP_web_applications) 만 보았을 때 상황이있었습니다. 단지'@ '이 치명적인 오류를 일으킨 함수와 함께 사용되었습니다. 나는 관리인이 나를 부르기 전에 그것 때문에 얼마나 많은 시간을 낭비했는지조차 알지 못한다. – binaryLV

답변

2

세션 데이터는 항상 디스크에

왜 첫번째 장소에있는 파일을 삭제 귀찮게 (당신이 memcache에에서 세션 데이터를 저장하거나 공유 메모리 가능)하지 않을 수 있습니다?

http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability

은 어쨌든 데이터베이스에 세션 ID를 작성, 파일 시스템에 의존하지 않고 자신의 세션 핸들러를 작성해야하기 때문에 당신이

+0

좋습니다. 2.4 버전이 나오면 세션 처리에 Redis를 사용할 것입니다. –

0

를하고 싶은 일을하기 위해 조정할 수 있습니다. 그렇지 않으면 - 예, 나쁜 생각입니다.

관련 문제