웹마스터 팁

http://www.hamslab.com/lab/php/web_auth/web_auth_mysql.html

아파치 모듈로 설치된 PHP에서 MySQL과 연동해서 아파치 인증을 사용하는 예입니다.

1. 인증 소개

MySQL을 이용한 사용자 인증(User Authentication)은 다음과 같이 한다.

서버 즉 스크립트에 Header() 함수를 사용하면서 웹서버에스는 "Authentication Required" 메시지를
클라이언트 브라우저에 보내게 되고 그러면 흔히 보는 사용자 인증 대화상자가 뜨게 된다.

여기서 사용자가 아이디, 암호를 넣게 되면 각각 $PHP_AUTH_USER, $PHP_AUTH_PW 변수에 들어가게 되고
이 값을 가지고 MySQL에 SQL 문을 날리는 방법으로 인증을 처리하게 된다.

일반적으로 사용되는 아파치의 기본 인증 방법(.htaccess, .htpasswd 파일을 이용하는)은
단지 사용자가 특정 디렉토리나 파일에 접근 권한을 가지는 가의 여부만을 판단하는 데 반해
MySQL을 이용하면 사용자별로 다른 권한레벨을 주어 인증 후 각각 다른 페이지로 연결시켜 줄 수도
있다는 장점이 있다.

주의할 점은 사용자 인증 기능은 PHP가 아파치 모듈로 돌아갈 때에만 가능하며
반드시 PHP 스크립트 제일 처음에 나와야 한다는 것이다.

주로 사용하는 방법은 auth.inc 파일을 따로 만들어 인증이 필요한 페이지의 시작 부분에

<?php
include "auth.inc";
?>

와 같이 추가시켜 주는 것이다.            //인증문서(예:auth.htm) 맨처음에 아래 3번 index.htm 참고

우선 test DB에 다음과 같이 member 라는 사용자 테이블을 만든다.

mysql> use test;
Database changed
mysql> create table member(
    -> id char(10) NOT NULL PRIMARY KEY,
    -> passwd char(10),
    -> name char(10),
    -> level int
    -> );
Query OK, 0 rows affected (0.04 sec)


그 다음 각기 다른 권한을 가지는 사용자를 등록해 준다.

mysql> insert into member values('hamyd','12345','정식사용자',3);
Query OK, 1 row affected (0.01 sec)

mysql> insert into member values('user1','user1','임시사용자',2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into member values('guest','guest','나그네',1);
Query OK, 1 row affected (0.00 sec)

mysql>


이렇게 데이터베이스에 인증에 필요한 사용자를 넣어두고 사용자 인증을 위한 페이지를 지정하고 나면
다음과 같은 인증 확인 대화상자가 나타난다. 적당한 암호를 넣으면 인증이 이루어져서 다음 과정으로
넘어간다.

2. auth.inc 의 내용   //인증파일(index.htm)이 있는곳과 같은 폴더내에 저장
<?

cfunction authenticate() {
   Header( "WWW-authenticate: basic realm="BBS ADMIN 영역"");
   Header( "HTTP/1.0 401 Unauthorized");
   $title = "Invalid Login";
?>
아이디와 암호가 필요합니다 !
<?
exit;

}
if (!isset($PHP_AUTH_USER)) {
   authenticate();
} else {
   mysql_pconnect('','mysql','') or die("Unable to connect to SQL server");
   mysql_select_db("test") or die("Unable to select database");
   $result = mysql_query("select name, level from member where id = '$PHP_AUTH_USER' and passwd='$PHP_AUTH_PW'");
   if(!mysql_num_rows($result))
     {
     authenticate();
     }
   else
   {
     $userinfo = mysql_fetch_array($result);
   }
}
?>


3. index.htm   // <- 해당폴더를 클릭했을때 바로 띄우고 싶을때 ( 또는 auth.htm 또는 auth.php)
<?
include "./auth.inc";
?>
<HTML>
<HEAD>
<TITLE> 사용자 인증 예제 </TITLE>
</HEAD>

<BODY bgcolor=#2b4577 text=white link=blue vlink=purple alink=red>
<?
  $username = $userinfo[0];
  $userlevel = $userinfo[1];

echo( " <script> window.alert('어서오세요 $username 님')  //또는 ('잘보고 가세요') 이렇게
        location.href='level$userlevel.htm'   //userlevel이 3일때 level3.htm  이렇게 미리 만들어둠(같은 폴더안에)
        </script>
       ");
?>
</BODY>
</HTML>

#............................................................#

index.htm 의 다른 방법  //인증후 index2.htm으로 바로 넘어가게 하고 싶을때.

<?
include "./auth.inc";
?>
<html>
<head>
<title> 사용자 인증예제</title>
</head>

<body>
<?
$username=$userinfo[0];
$username=$userinfo[1];

echo("<script>                      //window.alert 삭제했음.
     location.href='index2.htm'            //이 부분 주의 깊게 볼것.<script>는 반드시 넣어야됨.
     </script>
     ");
   ?>
  
   </body>
   </html>
#...............................................................#

DB 수정 방법.

mysql>use test;
mysql>update member set level='8' where name='정식사용자';
이렇게 하면 정식사용자의 레벨이 3에서 8로 바뀜.

제목 글쓴이 날짜
울산오피 ⦑오피쓰주소.COM⦒ 울산오피 울산OP 울산건마 울산오피 koykoyah 2025.02.21
익산오피 ⦑출장안마사이트.COM⦒ 익산오피 익산OP 익산건마 익산오피 koykoyah 2025.02.21
대구오피 ⦑출장안마사이트.COM⦒ 대구오피 대구출장마사지 대구오피 대구OP koykoyah 2025.02.21
압구정오피 ⦑출장마사지안내.COM⦒ 압구정마사지 압구정오피 압구정오피 압구정OP koykoyah 2025.02.21
청주오피 ⦑출장안마사이트.COM⦒ 청주오피 청주OP 청주건마 청주오피 koykoyah 2025.02.21
가락오피 가락출장안마 ⦑출장마사지안내.COM⦒ 가락OP 가락오피 가락오피 koykoyah 2025.02.21
강서오피 ⦑오피쓰주소.COM⦒ 강서마사지 강서오피 강서오피 강서OP koykoyah 2025.02.21
부천오피 ⦑오피사이트.NET⦒ 부천오피 부천출장마사지 부천오피 부천OP koykoyah 2025.02.21
여의도오피 ⦑오피사이트.NET⦒ 여의도OP 여의도오피 여의도출장샵 여의도오피 koykoyah 2025.02.21
부산오피 ⦑오피쓰주소.COM⦒ 부산오피 부산출장마사지 부산오피 부산OP koykoyah 2025.02.21
강동오피 ⦑오피쓰.COM⦒ 강동오피 강동OP 강동건마 강동오피 koykoyah 2025.02.21
용인오피 ⦑오피사이트.NET⦒ 용인오피 용인출장마사지 용인오피 용인OP koykoyah 2025.02.21
강남오피 ⦑출장안마사이트.COM⦒ 강남마사지 강남오피 강남오피 강남OP koykoyah 2025.02.21
군산오피 군산출장안마 ⦑오피.CLUB⦒ 군산OP 군산오피 군산오피 koykoyah 2025.02.21
판교오피 ⦑출장마사지안내.COM⦒ 판교오피 판교출장마사지 판교오피 판교OP koykoyah 2025.02.21
신림오피 신림오피 ⦑오피.CLUB⦒ 신림OP 신림스파 신림오피 koykoyah 2025.02.21
창원오피 창원OP ⦑오피쓰.COM⦒ 창원휴게텔 창원오피 창원오피 koykoyah 2025.02.21
목포오피 ⦑출장마사지안내.COM⦒ 목포마사지 목포오피 목포오피 목포OP koykoyah 2025.02.21
강남오피 강남오피 ⦑오피쓰주소.COM⦒ 강남OP 강남스파 강남오피 koykoyah 2025.02.21
부산오피 ⦑오피사이트.NET⦒ 부산오피 부산출장마사지 부산오피 부산OP koykoyah 2025.02.21