2017-09-08 6 views
0

PHP에서 세션 관리를 수행하는 방법과 로그인 세션 해시를 생성하기 위해 session_id()을 사용하여 하나의 로그인 세션 만 허용하려는 방법을 배우고 있습니다. 부름 session_id() 동일한 해시가 반환됩니다 0b055b4f53310060d84535ee8e3bf663. 여러 사용자와 로그인을 시도했는데, 각 로그인 세션과 각 사용자에 대해 동일한 해시를 반환합니다. SessionID는 PHP에서 고유하지 않습니다

//Login.php: 
session_start(); // Starting Session 
//Take inputs, do user query 
if (queryResultRows == 1){ 
    $_SESSION['userid']=$userinfo["uid"]; 
    $_SESSION['userlevel']=$userinfo["userlevel"]; 
    $_SESSION['login_user']=$username; // Initializing Session 
    $sessionid = session_id(); 
    //Insert sessionId into DB.. 
    //Redirect to next page. 
} 
//Logout.php: 
session_start(); 
if(session_destroy()) // Destroying All Sessions 
{ 
    header("Location: index.php"); // Redirecting To Home Page 
} 

지금 내가 로그인을 시도, 내가 성공적으로 다음 logout.php을 initated (세션이 생성하고 노력하고 있습니다) 내 페이지의 모든 세션 제한 구역에 대한 액세스 권한을 가지고, 세션이 파괴되었다, 난 더 이상 액세스 없었다 , 다시 로그인했지만 session_id() 값은 여전히 ​​동일합니다. 어떤 아이디어가 내가 여기서 잘못하고있는거야?

답변

1

session_destroy() 세션의 데이터 만 삭제하고 첨부 된 쿠키는 삭제하지 마십시오.

session_destroy()는 현재 세션과 관련된 모든 데이터를 삭제합니다. 세션을 모두 종료하려면 세션 ID도 설정 해제해야합니다. 쿠키가 세션 ID를 전파하는 데 사용되는 경우 (기본 동작) 세션 쿠키를 삭제해야합니다. setcookie()를 사용할 수 있습니다.

Documentation

또한

More information about PHP sessions and cookies

+0

session_regenerate_id 그래서 그것을 할 것 세션 ID 쿠키를 덮어 쓰기로 새로운 SESSION_ID를 다시 생성 할 수 있습니까? – Banana

+0

주어진 정보에 따르면, 당신은'session_destroy()'다음에'session_regenerate_id()'를 사용하거나'setcookie()'를 사용하여 세션 쿠키를 해제해야한다고 생각합니다 : _ session_regenerate_id()는 새로운 세션 쿠키를 새 세션 id._ [출처] (https://secure.php.net/manual/en/function.session-regenerate-id.php) – Caligone

관련 문제