문제

현재 PHP 스크립트에서 사용자가 로그인 한 후 Session_Login = 1을 저장했지만 문제가 있습니다. 나는 Firefox, Multi-Tab을 사용하는 습관이 있습니다 (대부분의 사람들과 오늘날의 모든 웹 브라우저 앱은 멀티 탭 기능이 있다고 생각합니다). 세션이있는 탭을 닫았지만 브라우저를 닫지 않았습니다. 몇 시간 후에, 나는 로그인 해야하는 같은 페이지로 돌아와서 그렇지 않습니다. 다시 로그인 할 필요는 없습니다 ( "세션"이라고 생각합니다). 어쨌든 사용자가 탭을 닫으면 브라우저를 닫으면 로그 아웃 할 수 있습니까?

지금 당장 1 개의 솔루션이 있습니다. 시간-아이디어 킥아웃. 그러나 PHP의 날짜/시간에 대한 지식이 매우 제한되어 있으므로 이것이 마지막 옵션이 될 것입니다. 알고 싶었습니다. Time-Idle을 사용하는 것 외에 내가 할 수있는 다른 일이 있습니까?

도움이 되었습니까?

해결책

PHP는 세션이 시간이되기 전에 얼마나 오래 지속되는지를 쉽게 설정할 수 있습니다.

session_set_cookie_params(3600); // make it expire after 1 hour

세션을 마지막으로 원하는 초를 전달합니다 (예에서는 1 시간 = 60 분 = 3600 초).

http://us2.php.net/manual/en/function.session-set-cookie-params.php

다른 팁

세션 쿠키는 브라우저 세션이 닫힐 때 브라우저에서만 지워집니다 (즉, 브라우저가 닫힌 경우) : 따라서 이름입니다. 탭이 닫힌 직후 세션을 지우려면 쿠키에서 매우 짧은 만료 시간 (약 5 분)을 설정하고 데이터베이스에 동일하게 저장할 수 있습니다. 그런 다음 웹 페이지에서 매 순간 서버에서 파일을 호출하는 JavaScript 기능을 갖습니다.이 파일은 다음 5 분 동안 쿠키/데이터베이스 항목을 "새로 고칩니다". 그런 다음 5 분 이상 사이트를 떠나면 세션이 무효화됩니다.

또한 웹 페이지를 닫았거나 다른 페이지로 갔는지 감지하는 JavaScript "OnUnload"기능을 추가 할 수도 있습니다. "DestroyCookie"기능을 호출하기 위해이 문제를 추가 할 수 있습니다. 'T 방금 사이트의 다른 페이지로 갔는데 실제로 두 개의 탭에 사이트에서 두 페이지가 열리지 않습니다.

나는 당신이 찾고있는 옵션이 세션 쿠키 만료의 설정이라고 생각합니다. PHP 명령을 기억하지 못하지만 창이 닫히면 쿠키가 만료되도록 설정할 수 있어야합니다.

PHP 세션 문서는 다음과 같습니다. http://us2.php.net/manual/book.session.php

아마도 session_write_close ()를 사용할 수 있습니까?

Session_destroy 함수에 대한 PHP 문서에 대한 의견이 있습니다. http://us2.php.net/manual/en/function.session-destroy.php#71889

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