2014-12-10 2 views
0

$_SESSION 변수를 사용해야하는 방법에 대해 혼란스러워지고 있습니다. 지금까지 내가 임시 데이터를 저장하는 데 사용된다는 것을 배웠습니다. 예를 들어 사용자가 로그인하면 일부 세션 변수를 설정하여 로그인했음을 알 수 있습니다. 이제는 내 문제가 있습니다. 각 사용자에 대해 세션을 만들어야합니까? 사용자가 로그 아웃하거나 모든 사용자에게 단 하나의 세션 만 사용하는 경우? 나는이 "가이드 라인"http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL와 그들이 사용자를 로그 아웃을 발견하기 때문에 나는이 의심 데 :세션 PHP, 로그인 처리하는 방법

include_once 'functions.php'; 
sec_session_start(); 

// Unset all session values 
$_SESSION = array(); 

// get session parameters 
$params = session_get_cookie_params(); 

// Delete the actual cookie. 
setcookie(session_name(), 
    '', time() - 42000, 
    $params["path"], 
    $params["domain"], 
    $params["secure"], 
    $params["httponly"]); 

// Destroy session 
session_destroy(); 
header('Location: ../index.php'); 

는하지만 $_SESSION 변수에 저장된 모든 값을 삭제이 코드되지 않습니다 때문에 다른 모든 사용자 로그인?

+0

나는 PHP를 더 잘 이해할 필요가 있다고 생각한다. 이 stackoverflow에 대한 질문을합니다. – schroeder

답변

1

웹 사이트의 모든 사용자 (브라우저 측면에서 사용자)는 자신의 세션을 가져오고 따라서 자신의 $ _SESSION 변수를 갖습니다.
웹 사이트에서 쿠키를 확인할 수있는 방법은 각 사용자/브라우저에 대한 고유 식별자가있는 PHPSESSID라는 것이 일반적입니다. 세션 데이터는 서버에 저장되며 올바른 세션 ID가있는 경우에만 $ _SESSION var에 값을 가져옵니다.
이제 한 사용자에 대해이 변수를 파기하면 그의 데이터가 사라지고 다른 모든 사용자의 데이터는 계속해서 액세스 할 수 있습니다.

0

사용자가 로그인하거나 로그 아웃 할 때 (또는 자신의 인증 수준이 실제로 변경 될 때) session_regenrate_id(true);으로 전화하는 것이 좋습니다. 이렇게하면 새 ID로 세션이 다시 시작되고 모든 내용이 복사됩니다. 이렇게하면 공격자가 사이트의 로그인되지 않은 다른 사이트에서 XSS를 통해 쿠키를 가져 오는 경우 세션 고정을 방지 할 수 있습니다.

또한 HTTPS 사이트를 실행하는 경우 "HTTP 전용"쿠키와 HTTPS (보안)를 사용할 수있는 것이 가장 좋습니다.