Programming

[PHP-22. 로그인(login) 프로그램 구현1]

steloflute 2014. 3. 19. 23:30

http://www.zetswing.com/bbs/board.php?bo_table=JS_LEC&wr_id=26&page=3

 

로그인 처리 프로그램 개발

 

웹사이트에 방문한 여러 사용자중에서 회원과 비회원을 분별하기위해 로그인 기술을 사용한다.

로그인을 통해 얻어지는 세션변수를 통해 같은 PHP파일에서 다른 결과물을 사용자에게 출력할수 있다.

 

예를들어 daum.net에 접속시 비회원은 메일을 보낼수 있는 버튼이 있지만 비회원은 메일을 보낼수 있는 버튼이 보이지 않는것이 로그인 기술을 사용한것이다.

 

보통 로그인 처리 프로그램은 쿠키변수 또는 세션변수로 처리할수 있습니다.

로그인처리 프로그램은 보안에 신경써야 하기때문에 보통 세션변수를 사용합니다.

왜그럴까요? 한번 생각해봅시다. (*^-^)(^-^*)☆

 

로그인 처리 프로그램 내/외부 처리 절차

 

1. 로그인폼을 접속합니다.

2. 로그인폼에 아이디/패스워드를 입력후 로그인버튼을 클릭합니다.

3. 입력한 아이디/패스워드로 인증처리를 하여 유효한지 판단합니다.

4. 계정이 유효하다면 로그인후 페이지로 이동합니다.

5. 계정이 유효하지 않다면 로그인폼으로 이동합니다.

 

로그인 처리 프로그램 파일 실행 절차

 

index.php -> login_ok.php -> index.php

 

기본 로그인 처리 프로그램 예제

 

※ 파란색은 주석입니다.

 

index.php

 

<?

 //# 세션변수를 사용하기위해 session_start(); 함수 실행 #//
 session_start();

?>

 

<script language="javascript">
<!--

 //# "로그인하기" 클릭했을때 호출되는 사용자 정의 함수 #//
 function login_send()
 {
  form = document.login_form;
  if (form.USERID.value == "")
  {
   alert("아이디 입력 요망");
   form.USERID.focus();
   return false;
  }
  else if(form.PASSWD.value == "")
  {
   alert("비밀번호 입력 요망");
   form.PASSWD.focus();
   return false;
  }
  else
  {
   return true;
  }
 }

 

//-->
</script>


<? if($_SESSION["session__id"]) { //# 세션 변수가 존재하면 실행 #// ?>

 <table align="center" border="1" bgcolor="pink" cellpadding="0" cellspacing="0" width="400">
  <tr align="center" height="30">
   <td>SESSION 아이디</td>
   <td><?=session_id();?></td>
  </tr>
  <tr align="center" height="30">
   <td>SESSION 파일 저장경로</td>
   <td><?=session_save_path();?></td>
  </tr>
  <tr align="center" height="40">
   <td colspan="2"><input type="button" value="   로그아웃하기   " onClick="location.href='login_ok.php?logout=yes';"></td>
  </tr>
 </table>

<?

//# 세션변수가 존재하지 않는다면 실행

}else{

?>

 <form name="login_form" method="post" action="login_ok.php" onSubmit="return login_send();">
 <table align="center" border="0" bgcolor="pink" cellpadding="0" cellspacing="0" width="200">
  <tr align="center" height="30">
   <td>아 이 디</td>
   <td><input type="text" name="USERID" style="width:100px;"></td>
  </tr>
  <tr align="center" height="30">
   <td>패스워드</td>
   <td><input type="password" name="PASSWD"  style="width:100px;"></td>
  </tr>
  <tr align="center" height="40">
   <td colspan="2"><input type="submit" value="     로그인하기     "></td>
  </tr>
 </table>
 </form>

<? } ?>

 

login_ok.php

 

<?

 //# 세션변수를 사용하기위해 session_start(); 함수 실행 #//
 session_start();

//# logout변수의 값이 yes넘어오면 실행 #// 
 if($logout == "yes")
 {
  session_unset();
  echo "<script>alert('로그아웃성공');location.href='index.php';</script>";
 }

//# logout변수의 값이 넘어오지 않으면 실행 #// 
 else
 {

  //# USERID 변수의 값과 PASSWD 변수의 값이 아이디값과 패스워드값과 같다면 실행  #//
  if((trim($USERID) == "byc") && (trim($PASSWD) == "byc"))
  {
   $_SESSION["session__id"]   =  $USERID;
   $_SESSION["session__pw"] =  $PASSWD;
   Header("Location:index.php");
  }

  //# USERID 변수의 값과 PASSWD 변수의 값이 하나라도 다르다면 실행  #//
  else
  {
   echo "<script>alert('로그인실패');location.href='index.php';</script>";
  }
 }

?>

 

★ 위의 로그인 처리 프로그램을 PHP파일내에서 정적인 인증처리가 아닌 DBMS을 이용한 동적인 인증처리로 바꾸어봅시다. ★

 

파이팅~