2010-02-01 4 views
1

이 질문은 기본 질문이므로 기본 대답이어야합니다. 저는 항상 세션 만 사용하여 사용자 로그인 시스템을 작성했습니다. 쿠키를 사용하여 선택한 경우 사용자가 내 사이트로 돌아올 때 로그인 상태로 유지할 수있는 옵션을 만들고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 확실하지 않지만 아래에서 작동한다고 생각하는 방식으로 기본 기능을 조금 쥐어 봤습니다. 그것이 옳은 것인지 아니면 내가 다르게해야 하는지를 말해주십시오. 쿠키는 사용자 ID와 그들은 당신이 올바른 궤도에있어PHP의 쿠키에서 사이트 인증을 허용하는 가장 좋은 방법은 무엇입니까?

// see if Session is set 
if (!isset($_SESSION['userID']) || $_SESSION['userID'] == ''){ 

    // session is not set so see if cookie is set 
    if (isset($_COOKIE['userID'])){ 
     //cookie is set so check that it is valid login ID and key 
     // if it returns tru then we will also initiate there session value so they will be logged in 
    }else{ 
     // redirect to login page 
    } 

    if (!isset($_SESSION['userID']) || $_SESSION['userID'] == ''){ 
     // redirect to login page 
    } 

}else{ 
    //user is logged in already 
} 

답변

2

나는 과거에 두 개의 쿠키를 설정했습니다. 하나는 userid를 저장하고 다른 하나는 사용자 ID를 확인하는 체크섬을 포함합니다. 다음은 예이다 :이 리버스 엔지니어링 또는 체크섬 경우는 다른 사용자 ID (반영하도록 변경 될 수 없도록

//store website user id 
setcookie('userid', $userid, time() + 2592000, "/"); 
//store checksum 
setcookie('checksum', md5($userid."F%^WD&*^("), time() + 2592000, "/"); 

체크섬, 사용자 ID의 소금 MD5 해시이고, 하나는 쉽게 '사용자 ID를 변경할 수있다 ' 쿠키).

세션을 복원하려면, 당신은 단지 쿠키를 확인하고 사용자 ID에 대한 (같은 '소금'으로) 체크섬을 확인 :

//Restore stored user session 
if (md5($_COOKIE["userid"]."F%^WD&*^(") == $_COOKIE["checksum"]) 
{ 
    //retrieve user again and store in session 
} 
1

"로그인"매번 다시 생성 될 것입니다 몇 가지 암호화 키를 누른 상태에서 가능성이 가장 높은 것입니다; 이것이 대부분의 "기억하기"구현이 작동하는 방식입니다.

관련 문제