2012-10-21 6 views
1

쿠키 저장이 안전하지 않으므로. 세션을 유지하거나 세션 만료를 설정하여 어쨌든 브라우저를 닫고 다시 열어도됩니다. 나를 다시 리디렉션하거나 내 사용자 이름이나 비밀번호를 다시 묻지 않습니다.브라우저를 닫은 후에도 세션을 유지할 수 있습니까?

public function __construct(){ 
session_start(); 
$this->check_login(); 
} 
public function check_login(){ 
if(isset($_SESSION['user_id'])){ 
$this->user_id = $_SESSION['user_id']; 
$this->logged_in = true; 
} else { 
unset($_SESSION['user_id']); 
$this->logged_in = false; 
} 
} 

if (isset($_POST['submit'])){ 
$username = $database->escape_value($_POST['username']); 
$password = $database->escape_value($_POST['password']); 
$found_user = $user->authenticate($username,$password); 
if ($found_user){ 
$session->login(); 
redirect_to('index.php'); 
} else { 
$message = output_message("Invalid Username or Password <br />"); 
} 
}else{ 
$username = ""; 
$password = ""; 
} 
+2

세션 ID가 만료되지 않은 쿠키를 저장하는 것이 여기 있습니다. 당신이 원하는 것을 더 안전하게 할 수있는 방법은 없습니다. –

+0

내 현재 코드. 브라우저를 닫고 다시 열 때마다 로그인을 다시 요청할 것입니다. 어쨌든 내 브라우저가 닫히더라도 사이트에 계속 로그인 할 수 있습니까? – arjay0601

+0

쿠키의 만료 날짜를 설정할 수 있습니다. 이렇게하면 브라우저를 닫았다가 다시 열어도 계속 유지됩니다. –

답변

0

세션은 세션 쿠키에 저장되어있는 제한 시간을 포함 때문 쿠키를 사용하는 것입니다 사용자가 세션을 제거 할 쿠키를 지 웁니다. 사용자가 브라우저를 닫을 때 쿠키는 지워지지 않습니다. Ali의 답변에 따라 세션 쿠키의 유효 기간을 확인하십시오.

쿠키를 사용하지 않고 재진 사용자를 확인하는 데 정말로 관심이있는 경우 "쿠키를 사용하지 않고 사용자 식별"에 대해 Google에 문의하십시오. 재미있는 일을 할 수 있지만 쿠키 사용만큼 신뢰할 수있는 것은 없습니다.

0

사용자가 성공적으로 로그인하면 세션에 user_id을 저장해야합니다.

if ($found_user){ 
    $session->login(); 
    $_SESSION['user_id'] = $username; 
    redirect_to('index.php'); 
} 

그리고 $username이 고유해야합니다.

관련 문제