MySQL 을 이용한 사용자 인증
author 관리자 date 2003-11-17 hit 219 HIT
이번 시간에는 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” ;
?>

와 같이 추가 시켜주는 것입니다.

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

use test ;
create table member(
id char(10) NOT NULL PRIMARY KEY ,
passwd char(10),
name char(10),
level int
);

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

insert into member values('loveme','12345','정식사용자','3');
insert into member values('user1','user1','임시사용자','2');
insert into member values('guest','guest','나그네','1');

- level 1 아이디/암호 : guest / guest
- level 2 아이디/암호 : user1 / user1
- level 3 아이디/암호 : loveme / 12345


* auth.inc

<?php

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

if (!isset($PHP_AUTH_USER)) {
authenticate();
} else {
mysql_pconnect('','mysql','') or die("Unable to connect to SQL server"); // MySQL 서버 접속
mysql_select_db("test") or die("Unable to select database"); // DB 선택
$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);
}
}
?>

* auth.html

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

<HTML>
<HEAD>
<TITLE> 사용자 인증 예제 </TITLE>
</HEAD>

<BODY bgcolor="#2B4577" text="white" link="blue" vlink="purple" alink="red">

<?php
$username = $userinfo[0] ; // auth.inc 에서 가져온 사용자 이름
$userlevle = $userinfo[1] ; // " 사용자 LEVEL

echo(" <script>
window.alert('어서오세요 $username 님')
location.href='level$userlevle.html'
</script>
");
?>

</BODY>
</HTML>
목록보기
        X  
31  PHP7 클래스 선언 방법  2021-11-03 397
30  PHP7 배열 선언 코드  2021-11-03 629
29  PHP 코드를 최적화하는 40가지 팁 (번역)  2009-12-23 590
28  if , else 조건문 코드 줄이기 (?:)  2009-12-23 438
27  간단한 이메일 보내기 클래스  2008-03-05 558
26  PHP 로 TTF 파일을 웹폰트로 만들기  2006-05-28 565
25  업로드 이미지 사이즈 처리  2006-05-23 481
24  glob -- Find pathnames matching a pattern  2006-05-18 342
23  Thumbnail Image (GD 처리)  2006-05-15 397
22  첨부 이미지(스샷) 사이즈 조정  2006-05-15 276
21  PHP Fuction 검색 창 소스  2006-04-11 359
20  이미지 파일의 가로, 세로 픽셀 알아내기  2006-04-11 319
19  테스트용 변수 출력 소스  2006-04-06 306
18  SMS 발송 - 명단 입력 스크립트  2005-09-16 293
17  리눅스 apache, php 에서 mssql connecting 하기  2005-06-07 494
16  php를 이용하여 서버 백업 프로그램 짜기  2004-05-04 460
15  베이비 헤로스 이벤트 소스  2004-04-28 277
14  세션 생성..  2004-04-21 343
13  제로보드 view.php 분석  2004-04-07 305
12  다중 게시판 검색  2004-03-25 1322
1 2