을 만드는 방법 안 php 로그인 수 있도록 시스템에 대한"로그인 상태로 유지에서"기능이?

StackOverflow https://stackoverflow.com/questions/1929340

문제

내가 사용한 간단한 로그인 시스템에 따라 세션이 바흐도 있습니다.면 사용자가 로그에서 세션 var 설정을 알려주는 스크립트 사용자가 허용합니다.나는 사용하지 않는 모든 사용자 정의 설치를 관 쿠키 var.

고 싶을 제공하는 옵션은 로그인 화면에서 말하는"유 loggued 에서 하루 종일".어떻게 하나에서는 안전한 방법이 있을까?

도움이 되었습니까?

해결책

먼저:구성 session.cookie_lifetime 지시어에서 하나 php.ini 파일 구성을 통해 또는 session_set_cookie_params().

다음으로,저장 사용자 이름 및 해쉬값을 암호의 세션에서,그리고 검증하는 로그인에서 모든 페이지입니다.로 그것은 여전히 유효합니다,그들은 편에 기록됩니다.

세션 쿠키의 자연이 만료해야 하는 일반적으로 깔끔한 것으로,없을 누군가 로그에서 자신의 세션(면 별로 정렬한다)물론,유지하면 활성화합니다.실패는 하지만,나는 고려 eCartoth 의 솔루션은 가까운 두번째,당신이 할 수가 두 번째 라인을 만약 문의:

if (my_validate_user_function($_SESSION['username'],$_SESSION['passhash']) 
    && $_SESSION['deathstamp'] > time()
) {
    // user is logged in again, oh boy!
}
else {
    // send in the death robots
    header('Location: /login.php',true,302);
}

편집:한을 고려할 수 있습는 세션 수정 및/또는 세션 납치.을 방지하기 위해서는,나는 추천 하는(또는 모두)의 두 가지 솔루션:

  1. 저장 사용자의 IP 주소에서 세션
  2. session_regenerate_id() 후에 성공적으로 로그인을 시도합니다.

다른 팁

을 때 당신이 말하는"계속 로그인 상태에서 하루 종일",나는 당신은 가정 의미에서 특정한 기계를 만,정확합니까?를 사용할 수 있습 mysql 테이블을 기억'로그인',또는 타임 스탬프의 경우는 로그인이 더 이상 유효하지 않을 경우 그들이 선택한 자신을 유지하기 위해 로그인 하루 종일.다음에 추가 어떤 스크립트를 시작하는 코드를 검색하의 id 는 사용자 세션에서 바흐도 있습니다.비교 현재의 타임 스탬프는 사용자에 대하여 저장된'마지막 유효 ts'과의 경우 과거는 시간이,당신이 알고 있는 그들어야에서 로그아웃 시점에서 당신은 닦음 세션을 사용하면 사용자는 다시 로그인하십시오.이 방법은 실제로 기록될 때까지 그들이 뭔가 과거 그 시점,그러나는 것처럼 보이습니다.또한,오히려 이상을 사용하여 mysql DB 당신은 또한 스토어는 마지막 유효 TS 세션에서 변수로습니다.

그래서 예를 들어 사용자가 로그에"나를 계속 하루 종일 로그인 선택":

$_SESSION['log_me_out_at'] = strtotime(date("Y-m-d ")."23:59:59");

한 다음 각 시간에서 페이지에 액세스하는 시스템:

if( $_SESSION['log_me_out_at'] < time() ){
  unset($_SESSION['user_is_accepted_in']);
}

한 가지 옵션은 세션 변수를 저장하고 IP 주소 및 만료와 연결하는 MySQL 테이블을 설정하는 것입니다. 그러나 구현 방법에 대한 모든 세부 사항은 확실하지 않습니다.

가장 간단한 것입니다 ~ 아니다 추천) 당신이 찾고있는 일을하는 방법은 $_COOKIE 컴퓨터의 사용자 이름과 비밀번호를 사용하면 사이트가 표시되는 시점을 확인합니다.

추가 보안을 위해 잠재적 해커에게 사용자의 계정 데이터에 대한 정보를 적게 제공하기 위해 사용자 데이터의 소금에 절인 MD5 해시로 하나의 쿠키 만 저장하는 것이 좋습니다. 쿠키를 설정할 때 지속 시간을 설정할 수 있습니다. php.net 이를 수행하는 방법에 대한 합리적으로 완전한 문서가 있습니다.

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