2009-08-20 11 views
1

사람이 내 사이트에 등록하거나 로그인하면 "thanks.php"로 전송됩니다.로그인하지 않은 사용자에 대해 "감사"페이지 보호

페이지 체크는 당신이 로그인했는지 여부를 알려주고 있습니다. 그렇다면 할 수있는 일을 알려주고 그렇지 않은 경우 register.php 페이지에 대한 링크를 제공합니다.

그러나 누구나 자신의 쿠키를 만들어 스크립트를 속일 수 있습니다.

어떻게하면 자신을 보호 할 수 있습니까?

내가 생각한 한 가지는 $_SESSION['session_id']이 데이터베이스에 있는지 확인하는 것입니다. 내가 아는 바로는, 당신은 그것을 직접 생성 할 수 없다. 그리고 가능하다하더라도, 데이터베이스 접근을 필요로한다.

그러나 나는 "감사"페이지에 대한 조언이나 경험이있는 사람이 있습니까?

답변

5

서버에 액세스하지 않고도 세션 데이터 또는 데이터베이스 데이터를 생성 할 수 없습니다. 따라서 이것을 수행하는 안전한 방법은 세션 쿠키와 일부 변수를 설정하여 확인하는 것입니다. 사람들이 로그인 할 때

session_start(); 
$_SESSION['logged_in'] = true; 


session_start(); 
if(!isset($_SESSION['logged_in'])) 
{ 
    header("Location: youarentsupposetobehere.com"); 
} 
+0

세션 아이디 변수가 고유해야합니다 이유를 관리하는 쿠키의 보안을 담당 설정해야합니다. 당신이 말했듯이, 세션에서 아무것도 서버에 있습니다 – Eli

+0

Ooops .. 거기 우리가 간다. –

2

은 음, 그래, 당신은 loggedin=true 또는 일부 등을 말한다 쿠키를 설정하지 않아야합니다.

는 대신 $_SESSION['loggedin'] = TRUE PHP는 일반적으로 자동으로

+0

실제로 세션 쿠키는 브라우저를 종료하면 만료됩니다. 브라우저 만 컴퓨터를 종료하지 않아도됩니다. php.ini 파일에서 session.cookie_lifetime 변수를 검색하십시오. 그것의 의미는 그 위에있는 선으로 설명됩니다. – KdgDev

+0

예, 기본적으로 세션 데이터는 세션에 대해서만 지속됩니다. :) – Eli

관련 문제