본문 바로가기
프로그래밍

PHP 인증사용하기

by 건우아빠유리남편 2009. 12. 6.
반응형

. 준비사항



--------------------------------------------------------------------------------


PHP로 인증방법은 PHP가 아파치 웹서버의 모듈로 인식하여 동작할 때만 가능합니다.그래서인지
윈도우에서는 500번 에러가 나면서 되지 않더군요.. 참고 하시길..

먼저 인증방법이 서버호출방법에 대해 알아보겠습니다. 여기에서는 401 Unauthorized라는


HTTP 프로토콜을 사용하므로 먼저 401 Unauthorized에 대해 알아보겠습니다.

HTTP 응답 코드

401 Unauthorized

서버에서 문서를 보내는데 제한을 한다. 일반적으로 문서는 패스워드나 IP주소로 보호받고 있어서

확인 절차과정에서 에러가 날 때 나타난다.

이 코드는  스크립트가 웹 서버의 보호 지역에 위치해 있고 확인 실패했음를 의미한다.

스크립트(PHP)는 문서를 읽기 위해서 특정 IP 주소나  인터넷 호스트를 허가함으로써 보호된다.

즉 , 사용자 이름 / 패스워드 조합으로 제한된다.

나중에 다른 코드에 대해서 설명해서 글을 올려놓도록  하겠습니다.

그럼 인증 검증할 스크립트 내부를 보도록 하자.

2. AUTH.PHP3 소스



--------------------------------------------------------------------------------




<?php
  
    if(!isset($PHP_AUTH_USER)) {


      Header( "WWW-authenticate: basic realm="ADMIN영역" ");
      Header( "HTTP/1.0 401 Unauthorized");

  echo("


        <html>
        <head>
        <script language="javascript">
        <!--
        function popup() {

                   alert('관리자 인증에 실패하였습니다.');
           history.back();
                   }
        //-->
        </script></head>
        <body onload='popup()'>
        </body>
        </html>
   ");


   exit;


}


else {


    echo("당신이 입력하신 이름은 $PHP_AUTH_USER  이고  암호는 $PHP_AUTH_PW입니다.!");


        }
?>

결과보기

-----------------------------------------------------------------------------

먼저 if문으로 인증에 실패했을 경우와 인증에 성공했을 경우로 나누어 준다.

isset()함수로 ($PHP_AUTH_USER)변수가 존재여부 확인을 한다.

Header()함수에서 서버 보안 영역지정과 401코드를 지정한다.

Header()함수는 HTTP 1.1 규격에 명시된 HTTP헤더 문자열을 전송하는 함수로 이 함수를

호출하여 인증과정을 거치게 된다. 이 함수를 호출하면 사용자 이름(username)과 패스워드

(password)를 입력받는 창이 나타난다.(윈도에서는 안됩니다.)

일단 입력 창에서 사용자이름 란에 입력한 값은 $PHP_AUTH_USER라는 PHP변수에 저장되고

암호 란의 패스워드값은 $PHP_AUTH_PW 라는 변수에 저장된다. 여기에서 입력값이

인증이 되면 인증페이지로 넘어가고 아니면 인증이 안되면 인증이 안되었다는 메시지를 나타낸다.

위에서 인증을 거치고 나면 사용자이름과 패스워드 값을 나타내준다. 이부분에 원하는 내용을

출력하도록 하면 되겠죠. 참 그리고 한번 인증을 통과하면 브라우저를 닫지 않는 이상 계속 인증이

허용됩니다.



● 인증에 실패했을 경우에

JAVASRIPT로 인증에 실패했다는 메시지를 뿌려준다.

그런다음  exit: 로 종료한다.

● 인증에 성공했을 경우


echo()로 사용자이름과 암호를 나타내어 준다.

큰 설명이 없더라도 이해하실거라 생각됩니다. 실제로 간단한 스크립트입니다.

이것을  PHP에서 인크루트 파일(.inc)로 만들어 다른 곳에서 호출 만하여 실행시킬 수 있습니다.

인크루트 화일은 반복되는 루틴을 하나의 파일로 만들어 다른 프로그램에서 호출하여 그 루틴을 실행할 때 사용됩니다. 실제로 프로그램상에서 유용하게 쓰여집니다.

참 그리고 보안문제에 있어서 아파치 설정부분에서 PHP확장자등록 부분에 .inc확장도 함께 등록 해

주시면  .inc역시 실행화일로 인식되어 소스가 보이지 않게 됩니다. 그나마 보안이 되겠죠! (헉 inc 파일을 사용하면 해킹 당합니다. 다른 확장자로 사용하세욤 헉헉)

==========================================================================

원본 출처 : http://www.koreaphp.co.kr/index1.html

반응형

댓글