아파치 사용자인증 (User Authentication)
author 관리자 date 2003-11-17 hit 184 HIT
서버측 스크립트에 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>


* 보다 자세한 내용은...

http://www.phpschool.com/php_loveme/html/classroom_view.html?code=classroom&id=26

목록보기
        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