아웃 - php 로그인 유지



원격 PHP에서 세션을 파괴(사용자가 다른 곳에서 로그인)? (4)

이봐, 나는 동일한 사용자가 다른 곳에 로그인 할 때 기본적으로 "로그 아웃"(session_destroy ())하도록 PHP 웹 사이트를 만들려고한다. 이것을 할 수있는 방법이 있습니까? 특정 세션을 원격으로 파괴하려면?

고마워!

스콧


Answer #1

Jon의 대답 (위대한 +1) 외에 할 수있는 또 다른 일은 처음에 사용자가 (referer)에서 왔는지 확인하고 사용자가 자신의 웹 페이지가 아닌 다른 웹 페이지에서 온 경우 세션을 삭제합니다.

$referer = $_SERVER['HTTP_REFERER'];
$referer = parse_url($referer);

if($referer['host'] != "yoursite.com" || $referer['host'] != "www.yoursite.com") {
     session_destroy();     
}

source


Answer #2

가장 좋은 방법은 세션을 저장 / 검색하고 제어하는 ​​방법을 완전히 제어 할 수 있다면 로그 아웃을 어렵게 만드는 것이 아니라 모든 유용한 기능을 제공하는 자체 세션 핸들러를 만드는 것입니다. 시간이 있다면.

그러나 더 빠른 해결책은 : PHP에서 세션 ID를 사용자와 함께 데이터베이스에 저장하고 isLoggedIn 함수에서 - 또는 무엇을 사용 하는지를 확인하십시오. 일치하지 않으면 로그 아웃하십시오.


Answer #3

우리가 할 수있는 일은 시간을 확보하고 사용자가 로그인 할 때 데이터베이스에 추가 값을 추가하는 것입니다 (manu1234567과 같은). 또한 세션에 추가하십시오. 이제 각 페이지에서 두 가지를 모두 비교하고 그 결과가 동일하면 다른 페이지로 전달하거나 메시지를 보냅니다.

이제 다른 사용자가 동일한 사용자 이름과 암호로 로그인 할 때 데이터베이스가 업데이트되고 첫 번째 사용자의 경우 오류 메시지가 표시됩니다. "다른 사람이 로그인 한 사용자가 있습니다."

참고 : 시간은 항상 다릅니다. 따라서 두 값이 동일 할 확률이 매우 낮습니다.


Answer #4

자체 세션 핸들러를 만들 필요는 없습니다.

로그인시 데이터베이스에 사용자 이름과 함께 세션 ID를 저장하기 만하면됩니다.

사용자가 페이지를 가져올 때마다 해당 사용자의 세션 ID를 저장된 세션 ID와 비교하십시오.

세션 ID가 일치하지 않으면 사용자가 다른 곳에서 로그인했음을 의미하며 자체 소멸해야합니다.





logout