phpsource/회원인증2001. 2. 22. 14:55
"PHP를 이용한 HTTP 인증(HTTP authentication with PHP)"에 대한 것은 잘 알고 있으리라 생각합니다. 쿠키인증 클래스는 "PHP를 이용한 HTTP 인증"를 모델링하여 작성된 클래스입니다. "PHP를 이용한 HTTP 인증"에서 수행이 어려운 로그아웃 처리를 쉽게 수행할 수 있는 기능을 가지게 될 것입니다. 마지막 접속 후 지정된 시간(기본값은 24분)이 지나면 자동으로 로그아웃하는 기능도 가지게 될 것입니다.
쿠키에 대한 일반적인 정보는 상단메뉴의 "쿠커"정보를 참조바랍니다.
활용 예제의 구성
소스코드의 전체구성을 살펴보면 아래와 같습니다.
1. 쿠키 관리용 클래스
▶ 쿠커(class.cooker.php)
2. 쿠키인증클래스
▶ 쿠키인증 클래스(class.authcook.php)
▶ 쿠키퍼미션 클래스(class.permcook.php)
3. 회원정보 관리용 클래스
▶ 회원정보 클래스(class.member.php)
4. 실험용 예제
▶ 로그인 페이지(login.php3)
▶ 회원전용 홈페이지(home.php3)
▶ 회원#1 페이지(member1.php3)
▶ 회원#2 페이지(member2.php3)
▶ 회원#3 페이지(member3.php3)
▶ 로그아웃 페이지(logout.php3)
< 예제 구성 >
쿠커(class.cooker.php)
쿠커(Cooker) 및 쿠키 암호화 클래스에 대한 정보는 메뉴 "후키라이브러리 >> 쿠커"를 참조바랍니다.
쿠키인증 클래스(class.authcook.php)
쿠키인증 클래스는 "PHP를 이용한 HTTP 인증"를 모델링하여 작성된 클래스입니다. 쿠키인증 클래스에서 쿠키를 다루기 위해 앞서 공개된 쿠커(Cooker)와 쿠키 암호화 클래스를 이용하게 됩니다. 그러니 먼저 쿠커에 대한 자료를 참조하기 바랍니다. "PHP를 이용한 HTTP 인증"은 아래와 같이 작성되는 것이 보통입니다.
[code php;gutter:false] <?php function authentication() { Header("WWW-authenticate: basic realm=\"회원 확인\""); Header("HTTP/1.0 401 Unauthorized"); echo "회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요."; exit; } if (!$PHP_AUTH_USER || !$PHP_AUTH_PW) { // // 인증창에 값을 입력하지 않은 경우 다시 인증창을 띄운다. // authentication(); exit; } // // 인증창 통과하였음 // 여기에서 회원 인증을 한다. // ...... 디비 등을 이용하여 회원 인증을 위한 소스 코드 삽입 ...... if (회원인증에 실패했으면?) { authentication(); // 다시 인증창을 띄운다. exit; } // // 회원인증에 성공함 // echo "<META http-equiv='Refresh' content='0; URL=home.php3'>"; ?> [/code]
쿠키인증 클래스를 이용하여 위와 동일한(?) 기능을 할 수 있도록 작성하면 다음과 같습니다.
[code php;gutter:false] <?php require "./cooker/class.cooker.php"; // 쿠커 require "./authcook/class.authcook.php"; // 쿠키인증 클래스 $auth = new authCook("회원 확인", "회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요."); $auth->start(); // 인증창을 띄운다. // // 인증창 통과하였음 // 여기에서 회원 인증을 한다. // ...... 디비 등을 이용하여 회원 인증을 위한 소스 코드 삽입 ...... if (회원인증에 실패했으면?) { $auth->start(); // 다시 인증창을 띄운다. exit; } // // 회원인증에 성공함 // echo "<META http-equiv='Refresh' content='0; URL=home.php3'>"; ?> [/code]
쿠키퍼미션 클래스(class.permcook.php)
일단 회원인증에 성공하게 되면 쿠커(Cooker)에 의해 클라이언트 쿠키영역에 정해진 양식대로 회원정보가 기록되며, 각 회원 전용 페이지에서는 기록된 회원정보를 가지고 페이지 접근 허용 여부를 결정하게 됩니다. 이를 위해 작성된 클래스가 쿠키퍼미션 클래스입니다.
[code php;gutter:false] <?php require "./cooker/class.cooker.php"; // 쿠커 require "./authcook/class.permcook.php"; // 쿠키퍼미션 클래스 $perm = new permCook("회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요."); $permission_user = "user1"; $permission_type = "owner"; $perm->check($permission_type, $permission_user); // // 페이지 퍼미션을 통과하였음 // . . . ?> [/code]
회원정보 클래스(class.member.php)
회원정보 클래스의 목적은 보통 데이터베이스에 기록되어 있는 회원정보와 로그인 과정에서 취득하게 되는 회원ID와 패스워드를 비교하여 방문자가 등록된 회원인가를 확인하는 것을 도와주기 위한 것입니다. 그러나 제가 공개한 본 클래스는 쿠키인증 클래스를 실험하기 위해 임시로 작성되어 있으며 여기서는 회원에 대한 정보를 데이터베이스가 아닌 일반 배열에 담았습니다. 따라서 이 클래스를 실전에서 사용하기 위해서는 소스 코드를 대폭 수정하여 데이터베이스를 이용하여 회원정보를 관리할 수 있도록 하여야 할 것입니다. 그러니 이 클래스는 쿠키인증 클래스의 실험용 이상의 의미를 두지 마시기 바랍니다.
페이지 구성 및 회원별 접근 제한
예제 프로그램에서는 페이지 #1, #2, #3는 퍼미션 등급이 "owner"으로 설정되어 있고, 홈페이지와 로그아웃 페이지는 퍼미션 등급이 설정되어 있지 않습니다.
페이지 구성 접근이 허용된 회원
로그인 페이지 모든 방문자
홈페이지 로그인한 모든 회원
페이지 #1 로그인한 "user1" 회원
페이지 #2 로그인한 "user2" 회원
페이지 #3 로그인한 "user3" 회원
로그아웃 페이지 로그인한 모든 회원
회원정보 클래스에 저장된 회원정보
위에서 언급한 바와 같이 회원정보가 배열의 형태로 저장되어 있습니다.
사용자 이름 암호
user1 test
user2 test
user3 test

Posted by 방글24