phpsource/회원인증2001. 2. 22. 15:06
제공되는 메소드
메소드 버전 기능
생성자 0.0.1 쿠커의 객체화, 초기값 설정
check 0.0.1 인증회원에게 현재페이지의 접근을 허용할 것인가를 확인
name 0.0.1 사용자명 및 암호를 저장하는 쿠키명을 획득/설정
logout 0.0.1 로그아웃. 모든 사용자 정보를 삭제
메소드 사용법
생성자 permCook([, string err [, bool path]])
[code php;gutter:false] $perm = new permCook("회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요."); [/code]
생성자에서는 허용되지 않은 방문자가 접근하였을 때 보여주는 에러메시지 err와 인증창에서 디렉토리 인증을 수행하였을 때 필요한 path 매개변수를 지정합니다.
허용되지 않은 방문자가 접근하면 check() 함수를 실행할 때 아래와 같은 에러 양식이 나타납니다. 이 에러 양식에 나타낼 문자열이 첫번째 매개변수 err입니다.
< 에러 출력 화면 >
두번째 파리미터는 쿠키인증 클래스에서와 마찬가지로 디렉토리별로 인증을 수행할 수 있도록 해줍니다. 이 매개변수는 쿠키인증 클래스에서 지정된 값과 동일한 값으로 지정하여야 합니다.
[code php;gutter:false] $perm = new permCook("회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요." , true); [/code]
생성자의 첫번째 매개변수는 또 다른 중요한 기능을 가지고 있습니다. 이를 지정하면 에러 화면에 나타날 문자열이 되지만 이를 생략하거나 널문자를 넘기게 되면 check() 함수를 수행할 때 에러화면이 나타나지 않습니다. 에러 화면은 생성자의 첫번째 매개변수에 널문자가 아닌 문자를 지정하였을 때만 나타나게 되어 있습니다. 이를 지정하지 않으면 어떠한 에러화면도 나타나지 않습니다.
첫번째 매개변수를 지정하게 되면 check() 함수를 실행하는 중에 에러가 발생하면 이에 상당하는 각종 에러 화면을 알아서 보여주지만 대신에 제어권을 사용자에게 넘기지 않습니다. 즉 에러 화면을 보여주는 즉시 실행을 중지합니다. 그러나 지정하지 않게 되면 에러 화면을 보여주지 않지만 대신에 실행을 중지하지 않고 제어권을 사용자에게 넘겨줍니다. 제어권을 사용자에게 넘기면서 현재 상태를 리턴값으로 되돌려 줍니다. 따라서 사용자는 이 값을 확인하여 적절한 처리를 해 주어야 인증 처리에 문제가 발생하지 않습니다. 적절히 처리하지 못하면 문제가 발생하지요. check() 함수에서 되돌려 주는 상태값에 대하여는 check() 함수를 참조바랍니다.
int check([string permission_type, string permission_user])
반환되는 상태를 보면 다음과 같습니다.
상태값 설명
0 현재 페이지에 대하여 접근을 허용함
1 사용자 정보가 없음. 현재 페이지에 접근하기 위해서는 먼저 로그인을 할 것
2 특정회원에게만 허용된 페이지에 호용되지 않은 회원이 접근하려고 함
3 정의되지 않은 퍼미션 등급을 지정하였음
아래는 생성자의 첫번째 매개변수를 지정하였을 때의 예입니다.
[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]
아래는 생성자의 첫번째 매개변수를 지정하지 않았을 때의 예입니다.
[code php;gutter:false] <?php require "./cooker/class.cooker.php"; // 쿠커 require "./authcook/class.permcook.php"; // 쿠키퍼미션 클래스 $perm = new permCook; $permission_user = "user1"; $permission_type = "owner"; $status = $perm->check($permission_type, $permission_user); if ($status) { switch ($status) { case 1: // 사용자 정보가 없음 echo "먼저 로그인을 하세요.\n"; break; case 2: // 특정 회원 전용 페이지 echo "회원님은 이 페이지를 이용할 수 없습니다.\n"; break; case 3: // 정의되지 않은 퍼미션 등급 echo "정의되지 않은 퍼미션 등급을 지정하였습니다. 소스코드를 확인하세요.\n"; break; } exit; } // // 페이지 퍼미션을 통과하였음 // . . . ?> [/code]
위에서와 같이 $permission_type 을 "owner"으로 설정하고, $permission_user에 특정회원ID를 설정한 후 $perm->check($permission_type, $permission_user) 함수로 확인하게 되면 쿠키에 기록된 회원ID와 $permission_user가 동일한 경우에만 페이지 접근을 허용하게 됩니다. 회원인증을 통과한 모든 회원이 볼 수 있도록 하려면 $permission_type와 $permission_user를 지정하지 않아도 되며 $perm->check() 함수를 인수없이 실행하면 로그인 과정에서 인증을 통과한 방문자는 모두 현재 페이지를 볼 수 있습니다.
string name([string newname])
쿠커에서 사용되는 쿠키명(cookie name)을 얻거나 새로운 쿠키명으로 설정할 때 사용할 수 있습니다. 새로운 쿠키명을 설정할 때는 반드시 start() 함수보다 앞서 수행하여야 합니다. 쿠커는 기본적으로 쿠키명을 "PHP_AUTH_DATA"로 설정되어 있습니다. 보안을 위해 주기적으로 변경해주는 것이 바람직합니다.
[code php;gutter:false] $auth = new authCook("회원 확인 영역"); $auth->name("NEW_COOKIE_NAME"); $status = $auth->start(); // 인증창을 띄운다. echo "현재 설정되어 있는 쿠키명은 ".$auth->name()."입니다.\n"; [/code]
void logout(void)
쿠커에 저장된 모든 사용자 정보를 삭제합니다. 아울러 쿠키파일도 삭제합니다. 이 함수는 자바스크립트로 구현되어 있으므로 어느 위치에서나 사용할 수 있습니다.
[code php;gutter:false] <?php require "./cooker/class.cooker.php"; // 쿠커 require "./authcook/class.permcook.php"; // 쿠키퍼미션 클래스 $perm = new permCook("회원전용 서비스를 받으시려면 먼저 회원으로 가입하세요."); $perm->check(); // // 페이지 퍼미션을 통과하였음 // $perm->logout(); echo "<A href=login.php3>로그인</A>"; ?> [/code]

Posted by 방글24