주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
연길시 신화서점 조선말 도서

특정 페이지에 암호를 걸어보자

네로™ | 2001.10.29 00:07:00 댓글: 0 조회: 602 추천: 14
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758838
▶ 특정 페이지에 암호를 걸어보자

오늘 다룰 것은 매우 간단한 형태의 인증 구현입니다. 웹서핑중에 한번쯤은 이름과
암호를 넣어달라는 창을 본 적이 있을 것입니다. 없다면 오늘 보면 되구요. ^-^

바로 HTTP 인증이죠. 많이 사용되고 있으며, 무척 쉽게 구현이 되기 때문에 천천히
읽어보시고 실습해보시면 금방 자기 것으로 만들 수 있을거에요. 화이팅입니다~!

다른 긴 말은 않겠습니다. 일단 이 강의로 인증창 구현을 해본 다음 더 관심이 가는
부분에 대해서는 직접 찾아보시기 바랍니다. HTTP/1.0(RFC1945), HTTP/1.1(RFC2068).


그럼 먼저 예제를 볼까요?

[auth.php]
--------------------------------------------------------------------------------
<?
if (!isset($PHP_AUTH_USER)) {
  header("WWW-authenticate: basic realm = "회원 영역"");
  header("HTTP/1.0 401 Unauthorized");
  echo "이름과 암호를 입력해주세요.";
  exit;
} else {
  echo "이름 : $PHP_AUTH_USER<br>
암호 : $PHP_AUTH_PW";
}
?>
--------------------------------------------------------------------------------
- 미리보기 : dreamphp.com/study2/auth/auth.php
- 소스보기 : dreamphp.com/study2/auth/auth.phps

해당 주소를 열어보면 이름과 암호를 입력해달라는 인증창이 뜹니다. 취소를 누르면
이름과 암호를 입력해달라는 메시지를 출력해주고, 내용입력없이 확인을 누르면 이름,
암호 문자열만 달랑 출력이 되죠. 이름과 암호에 아무 값이나 넣고 확인을 누르면
입력된 값이 출력되구요.

이 예제에서 보듯 입력된 이름과 암호는 각각 $PHP_AUTH_USER와 $PHP_AUTH_PW 변수에
저장이 됩니다. 이 변수를 이용하여 DB나 파일에 있는 사용자 정보와 비교해 통과
여부를 결정하는 것이죠.

그 부분만 추가하면 오늘의 강의는 끝나게 됩니다.


자-. 그럼 이름과 암호를 어디에 저장할까요? ^^ 물론 제 강의에서는 파일을 다루겠다
선언한 바가 있어 당근 파일을 이용합니다. 따로 MySQL 등을 배운 사람이라면 DB를
이용해도 됩니다. ^^ 응용은 어디까지나 사용자의 몫이니까요.

하지만 이번 경우는 간단한 형태기 때문에 암호화를 한다거나 하지는 않겠습니다.
미리 이름과 암호를 몇개 정해놓고 이를 이용하는 방법을 취하도록 하겠습니다.
어디까지나 하나의 응용 방법일 뿐이므로 마음에 들지 않는다면 직접 개선해보세요.
그러면서 실력이 느는 것이니까요. ^-^


먼저 사용자 이름과 암호를 변수에 선언해둔 파일이 하나 있어야겠죠.

[user.php]
--------------------------------------------------------------------------------
<?
$user = array(
"test"=>"1234",
"root"=>"admin"
);
?>
--------------------------------------------------------------------------------
- 소스보기 : dreamphp.com/study2/auth/user.phps


PHP 입문에서 다뤘습니다. 연관배열. array() 함수도 다뤘었죠. 뭐라구요? 기억이
안난다굽쇼? 정부는... i(T^T)i 훌쩍. 반성중입니다.

$user[test] = "1234";
$user[root] = "admin";

이렇게 표현할 것을 위처럼 간단히 표현한 것입니다. 만약 사용자를 더 추가할 경우
단순 타이핑 횟수를 줄여주기 위해서죠.


그 다음 해당 위치에서 처음 읽히는 문서, 네! index.html이나 index.php 등의 문서에
위의 user.php 파일을 include 또는 require해 사용하면 됩니다. 바로 예제로...


[index.html]
--------------------------------------------------------------------------------
<?
require "user.php"; // 사용자 정보

function authenticate() {
  header("WWW-authenticate: basic realm = "회원 영역"");
  header("HTTP/1.0 401 Unauthorized");
  echo "이름과 암호를 입력해주세요.";
  exit;
}

if(!$PHP_AUTH_USER || !$PHP_AUTH_PW) {
  authenticate();
} else {
  if ($user[$PHP_AUTH_USER]!=$PHP_AUTH_PW) authenticate();
}
?>
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=euc-kr'>
<title>::: BiHon's DreamPHP.com ::: - Authenticate</title>
</head>
<body bgcolor='black' text='white'>
<pre>
  ▷ 어서오세요. 회원 영역입니다.

   - 오늘의 소식

   1. 앞집 강아지가 옆집 강아지의 다툼이 뒷집 강아지의 중재로 해결되었습니다.
      때문에 이웃 동네 강아지들의 귀감이 되고 있답니다.

   "왈왈왈! 멍멍멍! 크르릉~ 컹!컹! 깨깽~~ 아마 이랬을 것입니다."

   긴급속보입니다.

   하루살이가 하루밖에 못살지 않느냐는 장수잠자리의 빈정거림에 열받은 나머지
   그자리에서 즉사했다는 참으로 안타까운 소식입니다.

   "에- 표현이 안됩니다. ㅠ_ㅠ"

   2. 끝입니다~


   썰렁하다고 돌 던질 준비를 하는 자들에게 이르노니, 너희는 정녕 남을 웃겨보았느냐.
   남을 웃겨보지 않은자가 어찌 남을 웃기기 위해 노력하는 자에게 매정히 돌을 던질수 있겠느뇨.
   자고로 노력하는 모습은 보기좋나니 그만 돌은 내려놓도록 하시게. 움~움~움핫핫핫~!


   ... Special example document.
</pre>
</body>
</html>
--------------------------------------------------------------------------------
- 미리보기 : dreamphp.com/study2/auth
- 소스보기 : dreamphp.com/study2/auth/index.phps


이 이전의 강의까지 차근차근 읽어온 분들이라면 프로그램의 흐름에 대해서는 이해할
수 있겠죠?

제일 처음 require "user.php"; 란 명령으로 사용자 정보를 포함합니다.
나중에 user.php 파일에 사용자 아이디와 암호만 추가하면 되기 때문에 편하죠.
index.html 파일의 처음에 해당 내용을 그대로 삽입해도 됩니다.

다음으로 인증과 관련된 부분을 함수로 만들어놓고 사용자 이름과 암호가 없거나,
사용자 정보와 값이 다른 경우 함수를 불러 인증을 요구하게 하는 것입니다. 이게
전부입니다. ^^

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:07)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >> 웹 프로그래밍
* 이동후 위치 : 웹 공부 >>

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (14) 선물 (0명)
첨부파일 다운로드 ( 1 )
auth.zip | 5.7KB / 14 Download
IP: ♡.106.♡.15
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11847
관리자
2003-09-20
11397
관리자
2003-09-20
20526
지구인
2010-08-27
19328
지구인
2009-09-07
13649
SOLIDH
2010-01-29
15603
엔죠라이프
2004-10-07
16703
우추
2001-12-27
1869
우추
2001-12-27
1882
우추
2001-12-27
2240
우추
2001-12-27
3778
우추
2001-12-27
1983
우추
2001-12-27
2286
노아
2001-12-22
3611
네로
2001-12-21
709
네로
2001-12-21
564
네로
2001-12-21
609
네로
2001-11-25
743
김광식
2001-11-06
1073
김광식
2001-11-06
498
김광식
2001-11-06
556
김광식
2001-11-06
659
다음역은
2001-11-05
392
김광식
2001-11-04
5062
네로™
2001-10-29
602
노아
2001-10-27
1062
노아
2001-10-27
764
노아
2001-10-27
711
모이자 모바일