다음 이전 차례

12. 사이트 메인 페이지 만들기

사이트의 메인 화면은 필자의 임의로 만들어 봤습니다.    먼저 메인 화면의 경우 그 사이트의 얼굴이며 제공하는 모든 정보를 한눈볼 수 있어야 합니다.    그리고 회원제 사이트일 경우 로그인과 로그아웃 기능이 존재해야 합니다. 그 과정을 하나씩 살펴보겠습니다.

12.1 회원 테이블 만들기

그럼 여기서 우리가 만들 사이트의 메인 화면을 먼저 살펴보겠습니다.

그림. 12-1 메인 화면
회원제 사이트의 경우 각 회원의 로그인 메뉴와 회원이 아닐 경우 가입하는 부분이 존재합니다.
이 부분을 구현하기 위해서는 각 회원의 정보를 저장할 공간이 필요합니다.
우선 기존에 만들어진 데이터베이스에 회원의 테이블을 생성해도 되지만 여기서는 새로운 데이터베이스를
만들고 거기에 회원들의 정보를 담을 테이블을 생성하겠습니다.

데이터베이스 만들기

mysql>create databases selectuser ;

테이블을 생성할 데이터베이스를 만들어 줍니다.
여기 사용할 데이터베이스 명은 selectuser이고 여러분이 수정해서 사용해도 됩니다.

테이블 만들기

./mysql -u root -p userin < userin.sql 

CD에 있는 userin.sql 파일을 이용해서 userin 테이블을 한 번에 설치하는 방법입니다.
만약 새로운 필드의 추가나 속성을 변경할 경우 mysql 부분을 참고하세요.
일일이 insert 문을 이용해서 입력하는 방법도 있지만 userin.sql 파일을 수정해서 사용하면 더 편합니다.

그림. 12-2 userin.sql

테이블의 인자들

회원 테이블(userin)을 만약 새롭게 만든 다면 여러분들은 테이블에 사용할 각 인자들에 대한 사전의 계획이
있어야 합니다.   회원들의 정보 중 어느 부분을 저장 할 것인지 명확히 결정한 후 작업을 해야 합니다.
여기에 사용한 부분들은 기본적인 부분이며 여러 가지 새로운 인자들을 사용해 만들어 보기 바랍니다.
        
    name - 회원 이름 
    id - 회원 고유 아이디
    passwd - 회원 암호
    resident - 회원 주민 번호
    email - 회원 메일 주소
    homepage - 회원 홈페이지 주소
    address - 회원 주소
    wdate - 회원 가입일
    uno - 회원 우편번호
    tel1 - 회원 휴대폰 번호
    tel2 - 회원 집 전화번호

12.2 소스 만들기

메인 화면의 소스는 총 두개의 파일로 구성 됩니다.    화면을 출력하는 파일(userin.php)과 각 화면들을 함수 형태로 저장한 파일(userin_func.php)입니다.    하나의 파일로 만들어 사용할 수도 있으며 각 부분별로 각각의 파일로 만들 수도 있습니다.

userin_func.php 전체 코드

    <?php

    $connect = mysql_connect('localhost','root','gksmf444');
    mysql_select_db('selectuser',$connect);
    /*----------  mysql 접속 ----------------*/


    function main_userin($sel) {
        echo("
        <html>
        <title>userin_view html</title>
        <body bgcolor=black>
        <center>
        <img src=skyt1.jpg border=0><br>

        <form method=post action=userin.php>

        <input type=hidden name=chanl value=checkid>

        <table border=0 cellspacing=2 cellpadding=2 width=700 >
                                                                                                                                                                                                        
        <font style='font-size:13px;font-style:italic;color:#fffff0>
        (*는 필수 입력 부분입니다.)</font>
                                                                                                                                                                                                                                                        
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=submit value=ID중복확인></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=id size=9 maxlength=8>(* 4~8자의 영숫자 조합)</font></td>
        </tr>
        </form>

        <form method=post action=userin.php>

        <input type=hidden name=chanl value=in>
        <input type=hidden name=sel value=$sel>

        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~ID</b></fontZ></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=id size=9 maxlength=8>(* 4~8자의 영숫자 조합)</font>*lt;/td>
        </tr>
                
        <tr>
          <td width=90 bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Name</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=name size=9>(* 한글 이름)</font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Passwd</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=password name=passwda size=9 maxlength=8>
          (* 영숫자 조합 4~8)</font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~PasswdRE</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=password name=passwdb size=9 maxlength=8>*</font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Email</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=emaila size=8>@
          <input type=text name=emailb size=15>(* sss@sss.sss.ss)
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~HomePG</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>HTTP://
          <input type=text name=home size=20>
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Resident</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=rsda size=7>-
          <input type=text name=rsdb size=8>(* 1111-11111)
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Tel1</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <select name=tela>
            <option value=017 selected>017
            <option value=018>018
            <option value=019>019
            <option value=011>011
            <option value=016>016
          </select>-
          <input type=text name=telb size=5>-
          <input type=text name=telc size=5>(* 휴대폰 번호)
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Tel2</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=tel2a size=4>-
          <input type=text name=tel2a size=4>-
          <input type=text name=tel2b size=5>-
          <input type=text name=tel2c size=5>
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~우편번호</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=uno size=4>-
          <input type=text name=uno2 size=4>*
          </font></td>
        </tr>
                
        <tr>
          <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0>
          <b>~Address</b></font></td>
          <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=text name=address size=54>* </font></td>
        </tr>
                
        <tr>
          <td bgcolor=black align=center colspan=4>
          <font style='font-size:13px;font-style:italic;color:#fffff0>
          <input type=submit value=회원등록>
          <input type=reset  value=다시></font></td>
          </tr>

        </table>          
        </form>           
        </center>
                
        </body>
        </html>
        ");
    }


    function error_user($connect,$id,$name,$passwda,$passwdb,$emaila,$emailb,$rsda,$rsdb,$telb,$telc,$uno,$uno2,$address)
    {

      $ally = mysql_query("select id from userin where id='$id' ",$connect);
      $userin = mysql_fetch_array($ally);


      if(!$id)
      {
        echo("
        <script>
          window.alert('id가 없습니다. 다시 입력해 주세요.')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if($userin[id])
      {
        echo("
        <script>
          window.alert('같은 id가 있습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!ereg("[0-9a-zA-z]",$id) || strlen($id) < 4)
      {
        echo("
        <script>
          window.alert('id는 영문숫자 조합 이어야 합니다. 다시 입력하세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      for($n = 0 ; $n < strlen($name) ; $n++)
      {

        if(ord($name[$n]) <= 0x80)
        {
          echo("
          <script>
            window.alert('이름이 없거나 한글이 아닙니다. 다시 입력해 주세요')
            history.go(-1)
          </script>
          ");

          exit;
        }
      }


      if(!$name)
      {
        echo("
        <script>
          window.alert('이름이 없습니다. 이름부터 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!$passwda || !$passwdb || $passwda != $passwdb)
      {
        echo("
        <script>
          window.alert('passw가 없거나 틀립니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!ereg("[0-9a-zA_Z]",$passwda) || strlen($passwda) < 4)
      {
        echo("
        <script>
          window.alert('passw는 영숫자 조합 이어야 합니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");
                                                                                                                                                                                                                                                            exit;
      }


      if(!$emaila || !$emailb)
      {
        echo("
        <script>
          window.alert('메일 주소가 없습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!ereg("[0-9a-zA_Z]",$emaila) || !ereg("[0-1a-zA_Z]",$emailb))
      {
        echo("
        <script>
          window.alert('email은 영숫자 조합 이어야 합니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      $rsdno = "234567892345";
      $rsdin = $rsda.$rsdb ;
      $rsdchecka = substr($rsdin,$n,1);
      $rsdcheckb = substr($rsdno,$n,1);


      for ($n = 0 ; $n < 12 ; $n++)
      {
        $rsdall = $rsdall + $rsdchecka*$rsdcheckb ;
      }


      $rsdcheck = "11" - "($rsdall % 11)";
      $rsdb2 = substr($rsdb,0,1);
      $rsdcheck2 = substr($rsdcheck,-1,1);
      $rsdcheck3 = substr($rsdb,-1,1);
      $rsdcheck4 = ereg("[1-4]",$rsdb2);


      if(!$rsdcheck4 || $rsdcheck2 != $rsdcheck3)
      {
        echo("
        $rsdcheck2
        $rsdcheck3

        <script>
          window.alert('주민번호111가 틀립니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!$rsda || !$rsdb)
      {
        echo("
        <script>
          window.alert('주민번호가 없습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!$telb || !$telc)
      {
        echo("
        <script>
          window.alert('전화번호가 없습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>

        exit;
      }


      if(!$uno || !$uno2)
      {
        echo("
        <script>
          window.alert('우편번호가 없습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }


      if(!$address)
      {
        echo("
        <script>
          window.alert('주소가 없습니다. 다시 입력해 주세요')
          history.go(-1)
        </script>
        ");

        exit;
      }
    }


    function main_view($username,$connect)

    {

      mysql_select_db(adminp,$connect);


      $ally = mysql_query("select no,title,mview,view from admin  order by no ",$connect);
      $ally2 = mysql_query("select no,title,mview,view from file  order by no ",$connect);

         
      $put = mysql_fetch_array($ally);
      $put2 = mysql_fetch_array($ally2);


      mysql_select_db('libchal',$connect);
                  

      $allya = mysql_query("select no,title,hit from $put[mview]  order by hit desc",$connect);
      $allyb = mysql_query("select no,title,hit from $put2[mview] order by hit desc",$connect );
      $put3 = mysql_fetch_array($allya);
      $put4 = mysql_fetch_array($allyb);


      $t_num=mysql_num_rows($ally);
      $t_num2=mysql_num_rows($ally2);
      $wdate = date('H:i:s');


      if($username) {
        $sslogin = "$username login 했습니다.";
        $chat_mod ="<a href ='userin.php?chanl=chat&username=$username' >";
      }


      if(!$username) {
        $sslogin = "Login 하세요~!";
        $userss = "<a href ='userin.php?chanl=main'>";     
      }



      if($username == guest)
      {
        $sslogin = "$username login 했습니다.";
        $userss = "<a href ='userin.php?chanl=main'>";
      }


      echo("
      <html>
      <title>
      main_view html
      </title>
      <body bgcolor=black>
      <center>
      <img src=skyt1.jpg border=0>
      </br>
      <font style='font-size:12px;color:gray'>
      $sslogin
      </font>
      <br>
      <br>


      <table border=0 cellspacing=2 cellpadding=2 width=500 >
      <tr>
      <font style='font-size:12px;color:gray'>
      $userss
      (회원 가입)
      </a>
      (geust입장은 id에 guest입력)
      $chat_mod
      (Chating)
      </a>
      </font>
      <form method=post action=userin.php>
      <input type=hidden name=chanl value=login>
      <td width=90 bgcolor=#808080 align=center>
      <font style='font-size:13px;font-style:italic;color:#fffff0'>
      <b>~ID</b></font></td>
      <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
      <input type=text name=id size=9></font></td>
      <td width=50 bgcolor=black>
      <img src=icon.jpg border=0 align=center>
      </td>
      <td bgcolor=black  align=left>
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
      <a href ='m.php?chanl=main_view&f=$put2[mview]&f2=$put2[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
      $put2[title]</font></a>
      </td>
      </tr>


      <tr>
      <td width=90 bgcolor=#808080>
      <font style='font-size:13px;font-style:italic;color:#fffff0'>
      <b>~Passwd</b></font></td>
      <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
      <input type=password name=passwd size=9></font></td>


      <td width=50 bgcolor=black align=left>
      <img src=icon.jpg border=0 align=center>
      </td>


      <td bgcolor=black  align=left>
      <a href='main_view.php?chanl=main_view&f=$put[mview]
      &f2=$put[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
      $put[title]</font></a></td>
      </tr>


      <tr>
      <td width=90 bgcolor=black>
      <input type=submit value=Login>
      </form>
      </td>
      <form method=post action=userin.php>
      <input type=hidden name=chanl value=logout>
      <td bgcolor=black>
      <input type=submit value=Logout>
      </form>
      </td>


      <td width=50 bgcolor=black>
      <img src=icon.jpg border=0 align=center>
      </td>


      <td bgcolor=black  align=left>
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
      <form method=post action=shop.php>cry~
          <select name=sel>
          <option value=1 selected>전자제품
          <option value=2>의류
          <option value=3>음악
          <option value=4>책
          </select>!shop</font>
      <input type=submit value=~Go>
      </td>
      </form>
      </tr>
      </table>
      ");


      echo("
      <br>
      <table border=0 cellspacing=2 cellpadding=2 width=700 >


      <td bgcolor=black  align=center width=200>
      <font style='font-size:13px;font-style:italic;color:white'>
      <img src=icon.jpg border=0 align=center>Top 자료</font></td>


      <td bgcolor=black  align=left width=500>
      <a href ='m.php?chanl=title&no=$put4[no]&f=$put2[mview]
      &f2=$put2[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
      <strong>$put4[title]</strong></font></a></td>


      <tr>
      <td bgcolor=black  align=center width=200>
      <font style='font-size:13px;font-style:italic;color:white'>
      <img src=icon.jpg border=0 align=center>Top 경매</font></td>


      <td bgcolor=black  align=left width=500>
      <a href ='main_view.php?chanl=title&no=$put3[no]&f=$put[mview]
      &f2=$put[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
      <strong>$put3[title]</strong></font></a></td>
      </tr>
      </table>");


      echo("
      <table border=0 cellspacing=2 cellpadding=2 width=300 >
      <tr>
      <td colspan=2 bgcolor=#808080 align=center>
      <font style='font-size:13px;font-style:italic;color:#fffff0'>
      <b>~File bang list</b></font></td>
      </tr>
      ");


      for($pd=1 ; $pd < $t_num2 ; $pd++)
      
          {
      
          $put2 = mysql_fetch_array($ally2);
      echo("
      <tr>
      <td bgcolor=black align=center width=200>
      <img src=icon.jpg border=0 align=center></td>
      <td bgcolor=black  align=left width=500>
      <a href ='m.php?chanl=main_view&f=$put2[mview]&f2=$put2[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
      <strong>$put2[title]</strong></font></a></td>
      </tr>
      ");
      
      }


      echo("
      <table border=0 cellspacing=2 cellpadding=2 width=300 >


      <tr>
      <td colspan=2 bgcolor=#808080 align=center>
      <font style='font-size:13px;font-style:italic;color:#fffff0'>
      <b>~경매 bang list</b></font></td>
      </tr>
      ");


      for($pd=1 ; $pd < $t_num ; $pd++)
          
      {
          
      $put = mysql_fetch_array($ally);


      echo("
      <tr>
      <td bgcolor=black align=center width=200>
      <img src=icon.jpg border=0 align=center></td>
      <td bgcolor=black  align=left width=500>
      <a href ='main_view.php?chanl=main_view&f=$put[mview]
      &f2=$put[view]&ssid=$username' >
      <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
      <strong>$put[title]</strong></font></a></td>
      </tr>
      ");

      }


      echo("
      </table>
      </center>
      </body>
      <html>
      ");

      }

    ?>

소스 설명

    메인 화면의 각 부분들을 구성하는 화면을 함수 형태로 저장한 파일입니다.

    userin_func.php 파일 내의 함수는 메인 화면의 또 다른 기능을 추가할 경우 함수만 추가해서 사용하면 됩니다.

Database 접속 만들기

    $connect = mysql_connect('localhost','root','gksmf444');

    /* Mysql을 접속하기 위한 호스트 명과 아이디, 패스워드를 입력 합니다. 
        
       여기에 사용한 호스트와 아이디, 패스워드는 여러분들이 새로 만들었다면 그것을 적어주면 됩니다. */


    mysql_select_db('selectuser',$connect);

    /* Mysql의 데이터베이스를 선택합니다. */

main_userin($sel) 함수

    처음 메인 화면에 접속하고 회원 가입을 클릭했을 경우 출력하는 부분입니다.

그림. 12-3 회원 가입 화면

ID 중복 확인 만들기

    <form method=post action=userin.php>
    /* 이 form문을 이용해서 입력된 값을 userin.php 파일로 전송합니다. */

    <input type=hidden name=chanl value=checkid>
    /* userin.php 파일의 $chanl=checked 항목을 선택합니다. */

    <table border=0 cellspacing=2 cellpadding=2 width=700 >
    <font style='font-size:13px;font-style:italic;color:#fffff0'>
    (*는 필수 입력 부분입니다.)</font>
    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=submit value=ID중복확인></font></td>
    /* 입력한 ID를 전송 하기 위한 버튼(submit)을 만듭니다. */

    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=id size=9 maxlength=8>(* 4~8자의 영숫자 조합)</font></td>
    /* ID의 입력은 최대 8자만 가능하게 합니다. */

    </tr>
    </form>

신규 회원 ID 입력란 만들기

    <form method=post action=userin.php>
    <input type=hidden name=chanl value=in>
    <input type=hidden name=sel value=$sel>
    /* 이 form 문은 위 ID중복 확인 문 이후의 모든 입력을 전달하는 부분이고, userin.php 파일의 $chanl=in 항목과
        
       $sel의 해당항목(chanl=in)의 수행 후 되돌아갈 화면을 선택하는 부분입니다. 즉, 메인 화면을 통해 회원 가입
           
       화면에 왔을 경우 $sel 값은 아물孤 없습니다. 그럴 경우 회원 가입 수행 후 다시 메인 화면으로 돌아옵니다. */

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~ID</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=id size=9 maxlength=8>(* 4~8자의 영숫자 조합)</font></td>
    /* 사용할 ID를 입력하는 부분입니다. 최대 입력 글은 8자로 제한합니다. */
    </tr>

회원 이름 입력란 만들기

    <tr>
    <td width=90 bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Name</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=name size=9>(* 한글 이름)</font></td>
    /* 이름의 입력 값은 name 변수로 회원 이름을 입력 받습니다. */
    </tr>

회원 패스워드 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Passwd</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=password name=passwda size=9 maxlength=8>
    (* 영숫자 조합 4~8)</font></td>
    </tr>

    /* 회원의 ID에 사용할 패스워드를 입력하는 부분입니다. 최대 크기는 8로 합니다. Input type는 password로 설정합니다. 

       이것은 화면에 *****게 표시해 다른 사람이 보지 못하게 하는 것입니다. */


    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~PasswdRE</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=password name=passwdb size=9 maxlength=8>*</font></td>
    </tr>

    /* 사용할 패스워드의 재확인 입력란을 만듭니다. 최대 입력 크기는 8입니다.
        
       이 항목 역시 type=password로 설정하며 전달 받는 인자는 passwdb입니다. */

메일과 홈페이지 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Email</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=emaila size=8>@
    <input type=text name=emailb size=15>(* sss@sss.sss.ss)
    /* @를 중심으로 두개의 입력란을 생성하고 차례로 emaila, emailb 변수로 메일 주소를 입력받습니다. */
    </font></td>
    </tr>


    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~HomePG</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    HTTP://
    <input type=text name=home size=20>
    /* HTTP:// 항목을 출력하고 home 인자로 사용자 홈페이지 주소를 입력 받습니다. */


    </font></td>
    </tr>

주민번호 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Resident</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=rsda size=7>-
    <input type=text name=rsdb size=8>(* 1111-11111)
    /* - 기호를 중심으로 두개의 변수(rsda , rsdb)로 사용자 주민 번호를 입력합니다. */


    </font></td>
    </tr>

휴대폰 번호 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Tel1</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <select name=tela>
    <option value=017 selected>017
    <option value=018>018
    <option value=019>019
    <option value=011>011
    <option value=016>016
    </select>-
    /* select 문을 사용해서 현재 서비스 중인 휴대폰 회사를 선택하게 합니다. tela 변수에 저장 됩니다. */
    <input type=text name=telb size=5>-
    <input type=text name=telc size=5>(* 휴대폰 번호)
    /* 각각 휴대폰 마지막 번호를 입력하는 부분입니다. 전달 인자는 차례로 telb , telc입니다. */


    </font></td>
    </tr>

자택 전화번호 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Tel2</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=tel2a size=4>-
    <input type=text name=tel2b size=5>-
    <input type=text name=tel2c size=5>
    </font></td>
    </tr>
    /* 지역 번호를 포함한 3개의 변수로 저장합니다. 각각 tel2a , tel2b , tel2c 입니다. */

우편 번호와 자택 전화번호 입력란 만들기

    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~우편번호</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=uno size=4>-
    <input type=text name=uno2 size=4>*
    </font></td>
    </tr>
    /* 우편 번호를 입력하는 부분입니다. 두개의 입력란을 -로 구분하며 각각 uno , uno2 변수로 입력 번호를 전달합求. */


    <tr>
    <td bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Address</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=address size=54>* </font></td>
    /* 주소를 입력하는 부분입니다. 주소 입력은 보다 사용자 중심의 입력 형태로 만들 수 있습니다.
        
       즉 해당 도시와 해당동 등의 입력을 자동으로 찾게 하는 방법인데, 이것은 전국의 주소와 우편번호를 가진
           
       데이터베이스 파일이 있어야 하며 인터넷 상에서 쉽게 구할 수 있습니다.
           
       여기서는 회원의 임의로 적을 수 있도록 했습니다. 만약 회원이 쇼핑을 하고 물건을 구매한다면 이 주소란을 
           
       정확히 입력 해야만 배달이 될 것입니다. */
    </tr>

입력 항목 전달 버튼 만들기

    <tr>
    <td bgcolor=black align=center colspan=4>
    <font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=submit value=회원등록>
    /* 회원등록 버튼을 생성합니다. 이것은 위 입력 항목들의 값을 userin.php 파일로 전달합니다. */
    <input type=reset  value=다시></font></td>
    /* 다시 버튼을 생성합니다. type=reset이며 이것은 입력 항목을 전부 다시 입력할 때 사용합니다. */
    </tr>
    </table>
    </form>/* 중복 ID 검사 form문 이후 두 번째 form문의 끝입니다. */
    </center>
    </body>
    </html>
    ");

error_user( ) 함수 항목

    회원 가입 입력란의 입력 조건을 부여 합니다.

    즉, 회원 가입 항목 중 사용자가 부정확하게 입력할 경우 에러 화면을 출력 하는 부분 입니다.

그림. 12-4 에러 화면 예

함수 전달 인자들

    error_user($connect,$id,$name,$passwda,$passwdb,$emaila,$emailb,$rsda,$rsdb,$telb,$telc,$uno,$uno2,$address)

    /* 각 전달 인자는 회원 입력 화면에서 입력 했던 값을 전달 하는 변수들 입니다. 그리고,

    $connect의 경우 mysql을 접속 하는 변수 입니다. */ 

ID 체크

    if(!$id)
    {

      echo("
      <script>
      window.alert('id가 없습니다. 다시 입력해 주세요.')
      history.go(-1)
      </script>
      ");

      exit;
    }
    /* $id 값이 없을 경우 출력하는 화면 입니다. */


    if($userin[id])
    {

      echo("
      <script>
      window.alert('같은 id가 있습니다. 다시 입력해 주세요')
      history.go(-1)
      </script>
      ");

      exit;
    }
    /* $userin[id] 값이 존재할 경우 같은 id가 있는 것이므로 해당 화면을 출력 합니다. */


    if(!ereg("[0-9a-zA-z]",$id) || strlen($id) < 4)
    { 

      echo("
      <script>
      window.alert('id는 영문숫자 조합 이어야 합니다. 다시 입력하세요')
      history.go(-1)
      </script>
      ");

      exit;
    }

    /* 전달 되어온 $id 값이 숫자와 영문 중 4자 보다 작을 경우 에러를 출력 합니다.
        
       즉,ereg 함수를 사용해서 [0-9a-zA-z] 숫자와 영문대소문자가 아니면 에러를 출력 하고 또는 strlen 함수를
           
       사용해서 전달되어온 인자 중 문자수가 4보다 작을 嚥 에러를 출력 합니다. */

회원 이름 체크

    for($n = 0 ; $n < strlen($name) ; $n++)
    {


    if(ord($name[$n]) <= 0x80)
    {

    echo("
    <script>
    window.alert('이름이 없거나 한글이 아닙니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");
    exit;
    }
    }
    /* 전달 되어온 회원 이름이 한글인지 아닌지 체크 하고 아닐 경우 에러 화면을 출력 합니다. */


    if(!$name)
    {

    echo("
    <script>
    window.alert('이름이 없습니다. 이름부터 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 회원 이름이 입력 되지 않았을 경우 출력 되는 화면 입니다. */

패스워드 체크

    if(!$passwda || !$passwdb || $passwda != $passwdb)
    {

    echo("
    <script>
    window.alert('passw가 없거나 틀립니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 회원 가입 항목 중 패스워드 부분과 패스워드 확인 부분의 인자가 없을 경우 또는 둘이 같지 않을 경우
        
       에러 화면을 출력 합니다. */


    if(!ereg("[0-9a-zA_Z]",$passwda) || strlen($passwda) < 4)
    {
        
    echo("
    <script>
    window.alert('passw는 영숫자 조합 이어야 합니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");
        
    exit;
    }
    /* 패스워드가 영문 대소문자나 숫자가 아닐 경우 또는 전달 되어온 문자가 4자 보다 작을 경우 에러 화면을 출력 합니다. */

메일 주소 체크

    if(!$emaila || !$emailb)
    {

    echo("
    <script>
    window.alert('메일 주소가 없습니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 메일 주소 항목이 없을 경우 출력 하는 화면 입니다. */


    if(!ereg("[0-9a-zA_Z]",$emaila) || !ereg("[0-1a-zA_Z]",$emailb))
    {

    echo("
    <script>
    window.alert('email은 영숫자 조합 이어야 합니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 전달 되어온 두개의 메일 주소 인자에 대해 영문 대소문자 와 숫자가 아니면 에러 화면을 출력 합니다. */

주민 번호 체크

    $rsdno = "234567892345";
    $rsdin = $rsda.$rsdb ;
    /* 전달 되어온 두개의 주민 번호 인자를 하나로 만듭니다. */


    $rsdchecka = substr($rsdin,$n,1);
    /* 전달 되어온 주민 번호 인자 입니다. */


    $rsdcheckb = substr($rsdno,$n,1);


    for ($n = 0 ; $n < 12 ; $n++)
    {
      $rsdall = $rsdall + $rsdchecka*$rsdcheckb ;
    }


    $rsdcheck = "11" - "($rsdall % 11)";
    $rsdb2 = substr($rsdb,0,1);
    /* 주민 번호 두 번째 인자의 처음 숫자를 추출 합니다. */


    $rsdcheck2 = substr($rsdcheck,-1,1);
    /* 주민 번호의 마지막 자리 숫자를 추출 합니다. */


    $rsdcheck3 = substr($rsdb,-1,1);
    /* 주민 번호의 마지막 자리 숫자를 추출 합니다. */


    $rsdcheck4 = ereg("[1-4]",$rsdb2);
    /* 주민 번호 두 번째 인자의 처음 숫자가 1~4 중 하나 인지 체크 합니다. */


    if(!$rsdcheck4 || $rsdcheck2 != $rsdcheck3)
    {

    echo("
    $rsdcheck2
    $rsdcheck3
    <script>
    window.alert('주민번호111가 틀립니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 주민 번호 두 번째 인자가 1~4 중 하나가 아닐 경우 또는 두 번째 인자 마지막 숫자가

       일치 하지 않을 경우 에러를 출력 합니다. */


    if(!$rsda || !$rsdb)
    {

    echo("
    <script>
    window.alert('주민번호가 없습니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 주민 번호 두 인자가 없을 경우 에러를 출력 합니다. */

휴대폰 번호와 우편 번호 체크

    if(!$telb || !$telc)
    {

    echo("
    <script>
    window.alert('전화번호가 없습니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");
        
    exit;
    }
    /* 휴대폰 번호 두 인자 중 하나가 없을 경우 에러 화면을 출력 합니다. */


    if(!$uno || !$uno2)
    {

    echo("
    <script>
    window.alert('우편번호가 없습니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;
    }
    /* 우편 번호 두 인자 중 하나가 없을 경우 에러 화면을 출력 합니다. */

주소 체크

    if(!$address)
    {

    echo("
    <script>
    window.alert('주소가 없습니다. 다시 입력해 주세요')
    history.go(-1)
    </script>
    ");

    exit;                  
    }
    /* 주소가 없을 경우 출력 하는 화면 입니다. */

main_view( ) 함수

    사이트의 메인 화면을 출력 하는 함수 입니다. 이장의 처음 메인 화면 그림을 참고 하세요.

전달 인자

    main_view($username,$connect)

    /* $username는 해당 ID의 세션으로 만들어진 유저 ID를 전달 받기 위함 입니다.

       즉 메인 화면의 로그인 상태를 보여 주기 위해서 입니다. $connect는 Mysql 접속 변수 입니다. */

Mysql 접속 Query들

    mysql_select_db(adminp,$connect);
    /* adminp 데이터 베이스를 선택 합니다.
        
    이것은 뒤 데이터 베이스 유틸리티를 만들 때 생성하는 데이터 베이스이 자료실과 경매 게시판의 정보를 담고 있습니다. */


    $ally = mysql_query("select no,title,mview,view from admin  order by no ",$connect);
    /* adminp 데이터 베이스에 admin 테이블(경매 게시판)의 인자를 검색 합니다.
        
    no - 게시판 번호 , title - 게시판 제목 , mview - 게시판 첫 번째 테이블 명 , view - 게시판 두 번째 테이블 명 */


    $ally2 = mysql_query("select no,title,mview,view from file  order by no ",$connect);
    /* adminp 데이터 베이스에 file 테이블(자료실 게시판)의 인자를 검색 합니다. */


    $put = mysql_fetch_array($ally);
    $put2 = mysql_fetch_array($ally2);
    /* 변수 put , put2로 각 검색 결과를 배열로 저장 합니다. */


    mysql_select_db('libchal',$connect);
    /* libchal 데이터 베이스를 선택 합니다. */


    $allya = mysql_query("select no,title,hit from $put[mview]  order by hit desc",$connect);
    /* libchal 데이터 베이스에서 해당 경매 게시판 테이블 중 히트 수가 가장 높은 글을 검색 합니다. */


    $allyb = mysql_query("select no,title,hit from $put2[mview] order by hit desc",$connect );
    /* libchal 데이터 베이스에서 해당 자료실 게시판 테이블 중 히트 수가 가장 높은 글을 검색 합니다. */


    $put3 = mysql_fetch_array($allya);
    $put4 = mysql_fetch_array($allyb);
    /* put3 , put4 변수에 해당 검색 결과를 배열로 저장 합니다. */


    $t_num=mysql_num_rows($ally);
    $t_num2=mysql_num_rows($ally2);
    /* 각 검색 결과의 수를 변수에 저장 합니다. */


    $wdate = date('H:i:s');
    /* 해당 변수에 지금 날짜를 저장 합니다. */

사용자 ID와 세션 확인

    if($username)
    {
      $sslogin = "$username login 했습니다.";
      /* 등록된 ID로 접속 했을 경우 해당 ID를 변수에 저장 합니다. */


      $chat_mod ="<a href ='userin.php?chanl=chat&username=$username' >";
      /* 등록된 ID로 접속 했을 경우 해당 ID로 채팅 모드를 링크 합니다. */
    }


    if(!$username)
    {
      $sslogin = "Login 하세요~!";
      $userss = "<a href ='userin.php?chanl=main'>";
    }
    /* 등록된 ID로 접속을 하지 않았을 경우 각 변수 입니다. */


    if($username == guest)
    {
      $sslogin = "$username login 했습니다.";
      $userss = "<a href ='userin.php?chanl=main'>";
    }
    /* 접속한 ID가 guest일 경우 변수 값들 입니다. */

사용자 접속 및 채팅 모드 출력

    <tr>
    <font style='font-size:12px;color:gray'>
    $userss
    (회원 가입)
    </a>
    /* 등록된 ID 가 아닐 경우 회원 가입을 링크 합니다. */


    (gest입장은 id에 guest입력)
    $chat_mod
    (Chating)
    </a>
    </font>
    /* 등록된 ID로 로그인 했을 경우 채팅 모드를 링크 합니다. */

입력란과 로그인 로그아웃 버튼 만들기

    <form method=post action=userin.php>
    <input type=hidden name=chanl value=login>
    /* ID 입력 항목의 form문의 시작 입니다. Chanl 변수의 값은 login 이며 userin.php에 전달 합니다. */


    <td width=90 bgcolor=#808080 align=center>
    <font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~ID</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=text name=id size=9></font></td>
    /* 등록된 ID를 입력 하는 항목을 출력 하고, id 변수로 입력 됩니다. */


    <td width=50 bgcolor=black>
    <img src=icon.jpg border=0 align=center>
    </td>


    <td bgcolor=black  align=left>
    <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
    <a href ='m.php?chanl=main_view&f=$put2[mview]&f2=$put2[view]&ssid=$username' >
    /* 등록된 자료실 게시판의 처음 자료실을 링크 합니다.
        
       자료실 테이블의 실행은 m.php파일이며 f,f2는 해당 자료퓽 테이블 입니다.

       그리고, ssid는 로그인한 ID 입니다. */


    <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
    $put2[title]</font></a>
    </td>
    </tr>


    <tr>
    <td width=90 bgcolor=#808080><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <b>~Passwd</b></font></td>
    <td bgcolor=black><font style='font-size:13px;font-style:italic;color:#fffff0'>
    <input type=password name=passwd size=9></font></td>
    /* 해당 ID의 패스워드를 입력하는 부분 이며 passwd 변수에 저장 됩니다. */


    <td width=50 bgcolor=black align=left>
    <img src=icon.jpg border=0 align=center>
    </td>
    <td bgcolor=black  align=left>
    <a href ='main_view.php?chanl=main_view&f=$put[mview]&f2=
    /* 등록된 경매 게시판의 처음 경매를 링크 합니다. */


    $put[view]&ssid=$username' >
    <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
    $put[title]</font></a></td>
    </tr>


    <tr>
    <td width=90 bgcolor=black>
    <input type=submit value=Login>
    </form>
    /* 등록된 ID와 패스워드로 로그인 하는 버튼을 생성 합니다. */


    </td>
    <form method=post action=userin.php>
    <input type=hidden name=chanl value=logout>
    <td bgcolor=black>
    <input type=submit value=Logout>
    </form>
    </td>
    /* 로그인 한 ID를 로그아웃 하는 버튼을 생성 합니다.  userin.php 파일의 chanl=logout 항목을 실행 합니다. */

쇼핑 몰에 선택 만들기

    <td bgcolor=black  align=left>
    <font style='font-size:13px;text-decoration:none;font-style:italic;color:blue'>
    <form method=post action=shop.php>cry~
    <select name=sel>
    <option value=1 selected>전자제품
    <option value=2>의류
    <option value=3>음악
    <option value=4>책
    </select>!shop</font>
    <input type=submit value=~Go>
    </td>
    </form>
    /* sel 변수로 각 쇼핑 몰에의 종류를 전달 합니다. 그리고 Go 버튼을 생성 합니다. */

Top 자료 와 Top 경매 출력 하기

    <table border=0 cellspacing=2 cellpadding=2 width=700 >
    <td bgcolor=black  align=center width=200>
    <font style='font-size:13px;font-style:italic;color:white'>
    <img src=icon.jpg border=0 align=center>Top 자료</font></td>
    <td bgcolor=black  align=left width=500>
    <a href ='m.php?chanl=title&no=$put4[no]&f=$put2[mview]&f2=
    $put2[view]&ssid=$username' >
    /* 해당 자료실의 히트 수가 제일 높은 자료를 링크 합니다. */


    <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
    <strong>$put4[title]</strong></font></a></td>
    /* $put4[title]은 등록된 자료실의 히트 수가 제일 높은 자료를 출력 합니다. */
    <tr>


    <td bgcolor=black  align=center width=200>
    <font style='font-size:13px;font-style:italic;color:white'>
    <img src=icon.jpg border=0 align=center>Top 경매</font></td>
    <td bgcolor=black  align=left width=500>
    <a href ='main_view.php?chanl=title&no=$put3[no]&f=
    $put[mview]&f2=$put[view]&ssid=$username' >
    /* 등록된 경매 중 히트 수가 제일 높은 경매를 링크 합니다. */


    <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
    <strong>$put3[title]</strong></font></a></td>
    /* $put3[title]는 등록된 경매 중 히트 수가 제일 높은 경매를 출력 합니다. */
    </tr>
    </table>

만들어진 자료실 모두 출력 하기

    이것은 데이터 베이스 admin에서 새롭게 생성했던 자료실에 대해 화면에 출력 하는 부분 입니다.


    for($pd=1 ; $pd < $t_num2 ; $pd++)

    {
    /* $t_num2는 등록된 자료실의 수 입니다. */


    $put2 = mysql_fetch_array($ally2);
    /* 해당 자료실의 정보를 배열로 저장 합니다. $ally2 변수는 해당 자료실의 정보를 가지고 있습니다. */

    echo("
    <tr>
    <td bgcolor=black align=center width=200>
    <img src=icon.jpg border=0 align=center></td>


    <td bgcolor=black  align=left width=500>
    <a href ='m.php?chanl=main_view&f=$put2[mview]&f2=$put2[view]&ssid=$username' >
    /* 등록된 자료실을 하나씩 링크 합니다. For문에 의해서 실행 합니다. */


    <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
    <strong>$put2[title]</strong></font></a></td>
    </tr>
    /* 등록된 자료실의 제목을 하나씩 출력 합니다.
        
       이것은 제일 처음 메인 화면에 출력한 자료실을 제외한 그 다음 米溯퓟壙 입니다. */
    ");
    }

만들어진 경매 게시판 모두 출력하기

    for($pd=1 ; $pd < $t_num ; $pd++)
    {
    /* $t_num 은 만든 경매 게시판의 총 수 입니다. */


    $put = mysql_fetch_array($ally);
    /* 해당 경매 게시판의 정보를 배열로 저장 합니다. */


    echo("
    <tr>
    <td bgcolor=black align=center width=200>
    <img src=icon.jpg border=0 align=center></td>
    <td bgcolor=black  align=left width=500>
    <a href ='main_view.php?chanl=main_view&f=$put[mview]&f2=
    $put[view]&ssid=$username' >
    /* 해당 경매 게시판을 하나씩 링크 합니다. For문에 의해 현재 만들어진 게시판의 수만큼 되풀이 합니다. */


    <font style='font-size:13px;text-decoration:none;font-style:italic;color:gray'>
    <strong>$put[title]</strong></font></a></td>
    </tr>
    /* 해당 게시판의 제목을 출력 합니다. */
    ");
    }

userin.php 전체 코드

    userin_func.php 파일의 함수들을 이용해서 화면에 출력하는 파일 입니다.


    <?php

    include('userin_func.php');


    if($chanl == main_view || !$chanl)
    {
      main_view($username,$connect);
    }


    if($chanl == main)
    {
      main_userin($sel);
    }


    if($chanl == in)
    {
      error_user($connect,$id,$name,$passwda,$passwdb,$emaila,$emailb,$rsda,$rsdb,$telb,$telc,$uno,$uno2,$address);


      $wdate = date('y-m-d');
      $resident = "$rsda-$rsdb" ;
      $email = "$emaila@$emailb" ;
      $tel1 = "$tela-$telb-$telc" ;
      $tel2 = "$tel2a-$tel2b-$tel2c" ;
      $uno = "$uno-$uno2" ;


      mysql_query("insert into userin(name,id,passwd,resident,email,homepage,address,tel1,tel2,wdate,uno)
                  values('$name','$id',password('$passwda'),'$resident','$email',
                         '$home','$address','$tel1','$tel2','$wdate','$uno')",$connect);


      if($sel == user_edit)
      {
        echo("
        <html>
        <body>
        <center>
        <form method=post action=db_view.php>
        <font style='font-size:13px;font-style:italic;color:#808080'>
        <b>회원 가입이 되었습니다.</b></font>
        <input type=hidden name=chanl value=user_edit>
        <input type=submit value=확인>
        </form>
        </center>
        </body>
        </html>
        ");
      }
      else
      {
        echo("
        <html>
        <body>
        <center>
        <form method=post action=userin.php>
        <font style='font-size:13px;font-style:italic;color:#808080'>
        <b>회원 가입이 되었습니다.</b></font>
        <input type=hidden name=no value=$no>
        <input type=hidden name=chanl value=main_view>
        <input type=submit value=확인>
        </form>
        </center>
        </body>
        </html>
        ");
      }
    }


    if($chanl == checkid)
    {
      $ally = mysql_query("select id from userin where id='$id'",$connect);
      $userin = mysql_fetch_array($ally);


      if($userin[id] || !$id)
      {
        echo("
        <script>
        window.alert('같은 id가 있거나 공란 입니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");
        exit;
      }
      else
      {
        echo("
        <script>
        window.alert('사용 가능한 id 입니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");
        exit;
      }
    }


    if($chanl == login)
    {
      $ally = mysql_query("select id,passwd from userin where id='$id'",$connect);
      $userin = mysql_fetch_array($ally);
      $passwput = mysql_query("select password('$passwd')");
      $passwput1 = mysql_result($passwput,0,0);


      if($userin[passwd] != $passwput1 || !$id )
      {
        echo("
        <script>
        window.alert('id,passw가 틀립니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");
        exit;
      }


      if($userin[passwd] == $passwput1 && $userin[id] == $id || $id == guest)
      {
        session_start();
        $username = "$id";
        session_register( "username");
        main_view($username,$connect);
      }
      else
      {
        echo("
        <script>
        window.alert('id,passw가 틀립니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");
        exit;
      }
    }


    if($chanl == chat)
    {
      echo("
      <html>
      <body>
      <center>
      <script>
      window.open('chat.php','send','height=100px width=325px')
      window.open('chat_view.php','send2','height=200px width=325px')
      </script>
      </center>
      </body>
      </html>
      ");

      main_view($username,$connect);
    }


    if($chanl == logout)
    {
      session_start();
      session_destroy("username");
      main_view($username,$connect);
    }

    ?>

소스 설명

    이 파일은 userin_func.php 파일의 함수들을 보다 다양한 방법으로 화면에 출력 하게끔 구성된 파일 입니다. 

    단순히 if문의 나열만 존재 하지만 이것은 $chanl 이라는 변수를 둠으로 해서 각각의 chanl에 따라 출력 하는
        
    화면이 달라 집니다.

메인 화면 출력

    <?php

    include('userin_func.php');
    /* userin_func.php 파일을 포함 합니다. 이것은 이 파일 안의 함수들을 사용 하기 위함 입니다. */


    if($chanl == main_view || !$chanl)
    {
      main_view($username,$connect);
    }
    /* $chanl 이 없거나 또는 main_view 일때 메인 화면을 출력 합니다. */

회원 가입 출력과 데이터 베이스 입력

    if($chanl == main)
    {
      main_userin($sel);
    }
    /* $chanl 이 main 일 때 회원 가입 화면을 출력 합니다. */


    if($chanl == in)
    {

      error_user($connect,$id,$name,$passwda,$passwdb,$emaila,$emailb,$rsda,$rsdb,$telb,$telc,$uno,$uno2,$address);
      /* $chanl이 in일 때 전달 되어온 회원 정보를 입력 하는 부분 이며 각 인자들에 대해 에러 여부를 체크 합니다. */
      

      $wdate = date('y-m-d');
      $resident = "$rsda-$rsdb" ;
      $email = "$emaila@$emailb" ;
      $tel1 = "$tela-$telb-$telc" ;
      $tel2 = "$tel2a-$tel2b-$tel2c" ;
      $uno = "$uno-$uno2" ;
      /* 주민번호 , 메일 , 전화번호 , 우편번호에 대해 각각의 형식에 맞게 만듭니다. */


      mysql_query("insert into userin(name,id,passwd,resident,email,homepage,address,tel1,tel2,wdate,uno)
           values('$name','$id',password('$passwda'),'$resident','$email',
                  '$home','$address','$tel1','$tel2','$wdate','$uno')",$connect);
      /* 전달 되어온 각 회원 정보가 에러가 없다면 userin 테이블에 입력 합니다. */


      if($sel == user_edit)
      {
      /* $sel 이 user_edit 이면 admin 항목에서 일반 유저를 등록한 것이며, 새로운 회원을 등록 시킨 후 다시
          
         admin 항목으로 되돌아 갑니다. */


         echo("
         <html>
         <body>
         <center>
         <form method=post action=db_view.php>
         <font style='font-size:13px;font-style:italic;color:#808080'>
         <b>회원 가입이 되었습니다.</b></font>
         <input type=hidden name=chanl value=user_edit>
         <input type=submit value=확인>
         </form>
         </center>
         </body>
         </html>
         ");
      }
      else
      {
         /* else 경우 $sel 값이 없는 경우 이며, 일반 사용자들이 회원 가입을 할 경우 가입한 후에 다시
                 
            메인 화면으로 이동합니다. */

        echo("
        <html>
        <body>
        <center>
        <form method=post action=userin.php>
        <font style='font-size:13px;font-style:italic;color:#808080'>
        <b>회원 가입이 되었습니다.</b></font>
        <input type=hidden name=no value=$no>
        <input type=hidden name=chanl value=main_view>


        <input type=submit value=확인>
        </form>
        </center>
        </body>
        </html>
        ");

      }
    }

ID 체크 항목

    if($chanl == checkid)
    {
      $ally = mysql_query("select id from userin where id='$id'",$connect);
      $userin = mysql_fetch_array($ally);
      /* $chanl이 checkid일 경우 수행하며, userin테이블에서 전달 되어온 ID의 존재 여부를 검색 하고 결과를
          
         배열로 저장 합니다. */


      if($userin[id] || !$id)
      {
        echo("
        <script>
        window.alert('같은 id가 있거나 공란 입니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");
        exit;
      }
      /* 전달 되어온 ID가 없거나 또는 해당 ID가 userin 테이블에 있을 경우 출력 하는 화면 입니다. */
          
      else
      {
        echo("
        <script>
        window.alert('사용 가능한 id 입니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");

        exit;
      }
      /* 그 밖의 경우 사용 가능한 ID임을 출력 합니다. */
    }

login 처리

    if($chanl == login)
    {
      $ally = mysql_query("select id,passwd from userin where id='$id'",$connect);
      $userin = mysql_fetch_array($ally);
      $passwput = mysql_query("select password('$passwd')");
      $passwput1 = mysql_result($passwput,0,0);

      /* $chanl이 login일 때 userin테이블에서 전달 되어온 ID에 대해 검색하고, 결과를 배열로 저장 합니다.
          
      그리고, 전달되어온 패스워드를 암호화 해서 변수에 저장 합니다. */


      if($userin[passwd] != $passwput1 || !$id )
      {
        echo("
        <script>
        window.alert('id,passw가 틀립니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");

        exit;
      }
      /* 전달 되어온 ID가 없거나 또는 전달 되어온 패스워드와 검색한 패스워드가 같지 않을 경우 출력 하는 화면 입니다. */


      if($userin[passwd] == $passwput1 && $userin[id] == $id || $id == guest)
      {
        session_start();
        $username = "$id";
        session_register( "username");
        main_view($username,$connect);
      }
      /* 전달 되어온 패스워드,ID가 검색한 패스워드,ID 와 같을 경우 또는 전달 되어온 ID가 guest 일 경우
          
      해당 ID에 대해 세션을 만듭니다. */

      else
      {
        echo("
        <script>
        window.alert('id,passw가 틀립니다. 다시 입력해 주세요')
        history.go(-1)
        </script>
        ");

        exit;
      }
      /* 그 밖의 경우 출력 하는 화면 입니다. */

    }

채팅 창 띄우기

    if($chanl == chat)
    {
      echo("
      <html>
      <body>
      <center>
      <script>
      window.open('chat.php','send','height=100px width=325px')
      window.open('chat_view.php','send2','height=200px width=325px')
      /* $chanl 이 chat일 때 두개의 채팅 창을 띄웁니다. 간단한 java 스크립트를 이용한 방법 입니다. */
      </script>
      </center>
      </body>
      </html>
      ");

      main_view($username,$connect);
    }

logout 하기

    if($chanl == logout)
    {
      session_start();
      session_destroy("username");
      main_view($username,$connect);
    }
    /* $chanl이 logout일 경우 접속한 ID의 세션을 제거 합니다. */

        
    다음 장에서는 자료실에 대해 설명 하겠습니다.

다음 이전 차례