[회원관리] 대학교홈페이지에 유용한 팁! > MySQL Tip

본문 바로가기
 

[회원관리] 대학교홈페이지에 유용한 팁!

페이지 정보

작성자 차동박 이름으로 검색 댓글 0건 조회 19,567회 작성일 06-12-14 18:20

본문

졸업한지가 꽤 되었지만,
10년전부터 해왔던 일이라, 아직도 관리하고 있네요..

이번에 홈페이지를 개편하면서,
회원관리의 문제점을 인식하고, 제대로 해볼려고 시도했습니다.

제가 설명과 모니터링에 약해서 이걸 시작해야할지 말아야 할지 고민되었지만,
일단 팁을 올려놓고 생각하기로 결정했습니다.

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

일단은 대학교 홈페이지라면,
회원들이 4분류입니다.
바로, 일반인/재학생/졸업생/교수 이렇다고 생각이 되었구요..
여기에서 재학생과 졸업생이라면, 학번이 필요할거라는 생각이 첫번째로 들지만,
재학중인지 졸업중인지도 구분하기 힘들고, 지금 몇학년인지 몇년도에 졸업을 했는지..
도대체가 알수가 없었습니다.

그래서 3단셀렉트박스를 이용해야겠는데.
첫번째 셀렉트박스를 선택했을때, 일반인과 교수라면 2단 3단 셀렉트박스는 필요가 없구요.
재학생이면 2단은 학번, 3단은 현재학년 이정도..
졸업생이면 2단은 학번이지만, 3단은 졸업년도의 정보가 필요합니다.

처음엔 DB를 이용해서 값을 입력 받아서 출력할려고 시도하다가, 너무 불편해서..
처음부터 다시 생각하기 시작했고,
자바스크립트를 이용하기로 결정해서 완성에 이르렀네요..

회원DB의 필드를 더 추가할까 하다가,
편하게 icq / aol / msn 이 별로 필요가 없어서 이필드를 그대로 이용하기로 했습니다.

이제 시작해봅니다.

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

1단계.

먼저, 아래의 자바스크립트를 원하는 스타일로 꾸미시면 됩니다.

member_infomation.js
--------------------------------

function icq_sel(str)
{
  if( str == "일반인" || str == "미얀마어과교수")
  {
        write.aol.options.length = 1;//셀렉트박스 옵션갯수지정
        write.aol.options[0].value="";
        write.aol.options[0].text="";

        write.msn.options.length = 1;//셀렉트박스 옵션갯수지정
        write.msn.options[0].value="";
        write.msn.options[0].text="";
  }
  if( str == "미얀마어과재학생")
  {
        write.aol.options.length = 10;//셀렉트박스 옵션갯수지정
        write.aol.options[0].value="06학번";
        write.aol.options[0].text="06학번";
        write.aol.options[1].value="05학번";
        write.aol.options[1].text="05학번";
        write.aol.options[2].value="04학번";
        write.aol.options[2].text="04학번";
        write.aol.options[3].value="03학번";
        write.aol.options[3].text="03학번";
        write.aol.options[4].value="02학번";
        write.aol.options[4].text="02학번";
        write.aol.options[5].value="01학번";
        write.aol.options[5].text="01학번";
        write.aol.options[6].value="00학번";
        write.aol.options[6].text="00학번";
        write.aol.options[7].value="99학번";
        write.aol.options[7].text="99학번";
        write.aol.options[8].value="98학번";
        write.aol.options[8].text="98학번";
        write.aol.options[9].value="97학번";
        write.aol.options[9].text="97학번";

        write.msn.options.length = 5;//셀렉트박스 옵션갯수지정
        write.msn.options[0].value="1학년재학中";
        write.msn.options[0].text="1학년재학中";
        write.msn.options[1].value="2학년재학中";
        write.msn.options[1].text="2학년재학中";
        write.msn.options[2].value="3학년재학中";
        write.msn.options[2].text="3학년재학中";
        write.msn.options[3].value="4학년재학中";
        write.msn.options[3].text="4학년재학中";
        write.msn.options[4].value="휴학中";
        write.msn.options[4].text="휴학中";
  }
  if( str == "미얀마어과졸업생")
  {
        write.aol.options.length = 11;//셀렉트박스 옵션갯수지정
        write.aol.options[0].value="02학번";
        write.aol.options[0].text="02학번";
        write.aol.options[1].value="01학번";
        write.aol.options[1].text="01학번";
        write.aol.options[2].value="00학번";
        write.aol.options[2].text="00학번";
        write.aol.options[3].value="99학번";
        write.aol.options[3].text="99학번";
        write.aol.options[4].value="98학번";
        write.aol.options[4].text="98학번";
        write.aol.options[5].value="97학번";
        write.aol.options[5].text="97학번";
        write.aol.options[6].value="96학번";
        write.aol.options[6].text="96학번";
        write.aol.options[7].value="95학번";
        write.aol.options[7].text="95학번";
        write.aol.options[8].value="94학번";
        write.aol.options[8].text="94학번";
        write.aol.options[9].value="93학번";
        write.aol.options[9].text="93학번";
        write.aol.options[10].value="92학번";
        write.aol.options[10].text="92학번";

        write.msn.options.length = 11;//셀렉트박스 옵션갯수지정
        write.msn.options[0].value="2006년졸업";
        write.msn.options[0].text="2006년졸업";
        write.msn.options[1].value="2005년졸업";
        write.msn.options[1].text="2005년졸업";
        write.msn.options[2].value="2004년졸업";
        write.msn.options[2].text="2004년졸업";
        write.msn.options[3].value="2003년졸업";
        write.msn.options[3].text="2003년졸업";
        write.msn.options[4].value="2002년졸업";
        write.msn.options[4].text="2002년졸업";
        write.msn.options[5].value="2001년졸업";
        write.msn.options[5].text="2001년졸업";
        write.msn.options[6].value="2000년졸업";
        write.msn.options[6].text="2000년졸업";
        write.msn.options[7].value="1999년졸업";
        write.msn.options[7].text="1999년졸업";
        write.msn.options[8].value="1998년졸업";
        write.msn.options[8].text="1998년졸업";
        write.msn.options[9].value="1997년졸업";
        write.msn.options[9].text="1997년졸업";
        write.msn.options[10].value="1996년졸업";
        write.msn.options[10].text="1996년졸업";
  }
}

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

위의 내용을 적당하게 잘 맞추어서 member_infomation.js이라는 이름으로 저장을 시키고 올려둡니다.

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

2단계.

이제 이것을 적용시키기 위해서 제로보드폴더의 lib.php를 열어봅시다!

lib.php에서는 html의 정의가 된 부분이 두 부분이 있는데요.
첫번째는 헤더와 푸터의 영향을 받는 일반게시판설정을 위한 html선언부분이구요.
두번째가 관리자메뉴와 팝업창등에 영향을 미치는 부분입니다.
위의 member_infomation.js는 두번째 html선언부분에 포함시켜겠죠?

'<html'로 찾아보시면 됩니다. 두번째 부분에 아래와 같은 소스가 있을겁니다.

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

<meta http-equiv=Content-Type content=text/html; charset=EUC-KR>
<link rel=StyleSheet HREF=style.css type=text/css title=style>
        <?=$script?>
</head>
<body topmargin='0'  leftmargin='0' marginwidth='0' marginheight='0' <?=$body?>>

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

그 사이에 <script type='text/javascript' src='http://www.emyanmar.net/js/member_infomation.js'></script>
를 자신의 계정에 맞게 바꾸어서 올려두면 됩니다.

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

<meta http-equiv=Content-Type content=text/html; charset=EUC-KR>
<link rel=StyleSheet HREF=style.css type=text/css title=style>
<script type='text/javascript' src='http://www.emyanmar.net/js/member_infomation.js'></script>
        <?=$script?>
</head>
<body topmargin='0'  leftmargin='0' marginwidth='0' marginheight='0' <?=$body?>>

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

이렇게 되었습니다. 이까지해서 준비작업은 완료되었네요..

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

3단계.

이제 본격적인 소스 바꾸는 일이 남았습니다.
바꿀부분이 많이 있죠?

1.회원가입(member_join.php)부분
2.정보수정(member_modify.php)부분
3.회원정보보기(view_info2.php)부분
이게 기본이구요.. 더 있죠..

4.admin회원관리목록(admin/admin_view_member.php)부분
5.admin회원관리(admin/admin_modify_member.php)부분
6.admin가입폼관리(admin/admin_modify_member_join.php)부분

에고에고.. 이걸 언제 다 손댓나 싶네요.. 더 있었나?

일단의 설명에서 admin쪽은 빼고 설명해야 겠습니다.
나중에, 추가해서 설명드려야겠으면 추가하겠습니다.

아! 일단은 icq / aol / msn 시트를 이용해야되는 관계로 해서,
회원관리폼에 가셔서 이 3가지는 사용첵크는 꼭 해주셔야겠져?


이제 member_join.php부터 바꿔봅시다.

member_join.php에서 원래의 icq / aol / msn 입력받는폼 3가지를 삭제해준뒤에,
아래의 소스만 적당한 위치에 올리면 끝입니다.

아래의 소스에서 $opArr = array('일반인','미얀마어과재학생','미얀마어과졸업생','미얀마어과교수');
이부분은, 단계1에서 맞추어둔 member_infomation.js내용과 맞추어두면 됩니다.

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

<? if($group[use_icq]) { ?>
    <tr align=right height=23>
      <td valign=top bgcolor="ffffff" style="padding-top:4"><b>가입자정보</b> : </td>
      <td align=left>
 
<select name="icq" onchange="icq_sel(write.icq.value);">
<option value=''>기본정보</option>
<?
$opArr = array('일반인','미얀마어과재학생','미얀마어과졸업생','미얀마어과교수');
foreach($opArr as $val) echo "<option value='".$val."'>".$val."</option>";
?>
</select>
<select name="aol">
<option value=''>학번정보</option>
</select>
<select name="msn">
<option value=''>상태정보</option>
</select>
 
<br> ☞ 재학생&졸업생은 학번정보와 상태정보를 모두 기록하세요!
<input name=open_icq type=hidden value=1 checked>
<input name=open_aol type=hidden value=1 checked>
<input name=open_msn type=hidden value=1 checked>
      </td>
    </tr>
        <tr>
        <td colspan=2 height=1 bgcolor=#eeeeee></td>
        </tr>
  <tr>
      <td colspan="5" bgcolor="#ffffff" align="center"><img src="images/t.gif" width="10" height="1"></td>
    </tr>
<? } ?>

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

잘 하셨나요?

이젠, 회원정보수정의 member_modify.php부분입니다.
위의것과 비슷한데, 윗부분에는 이전의 기록되었던 정보를 출력하고 없으면 없다고 표시해야겠네요..

역시나 member_modify.php에서도 icq / aol / msn 폼부분은 삭제해두고,
아래와 같은 내용을 적당한 위치에 집어넣습니다.

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

  <tr height=23 align=right>
    <td bgcolor="ffffff">나의정보 : </td>
    <td align=left>
 
<?
if ($member[icq]) {
echo $member[icq];
} else {
echo "회원정보가 없습니다. 기록하여주세요!";
}
if ($member[aol]) {
echo " | ";
echo $member[aol];
}
if ($member[msn]) {
echo " | ";
echo $member[msn];
}
?>
<br>
 
<select name="icq" onchange="icq_sel(write.icq.value);">
<option value="<?=$member[icq]?>" selected>기본정보</option>
<?
$opArr = array('일반인','미얀마어과재학생','미얀마어과졸업생','미얀마어과교수');
foreach($opArr as $val) echo "<option value='".$val."'>".$val."</option>";
?>
</select>
<select name="aol">
<option value="<?=$member[aol]?>" selected>학번정보</option>
</select>
<select name="msn">
<option value="<?=$member[msn]?>" selected>상태정보</option>
</select>
 
<input type=hidden value=1 name=open_icq <?=$check[$member[open_icq]]?>>
<input type=hidden value=1 name=open_aol <?=$check[$member[open_aol]]?>>
<input type=hidden value=1 name=open_msn <?=$check[$member[open_msn]]?>>
    </td>
  </tr>
  <tr>
      <td colspan=2 height=1 bgcolor=#eeeeee></td>
    </tr>
   
--------------------------------

또 남은게 view_info2.php부분이 있네요..

역시나 view_info2.php에서도 icq / aol / msn 출력부분은 삭제를 하고 적당한 위치에 아래의 소스를 집어넣어줍니다.

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

  <tr><td align=right width=100><b><font style=font-family:Tahoma;font-size:7pt;color:#666666>WHO IS</font><b>  </td><td align=left width=270><img src="memo_images/t.gif" width="10" height="3"><br>
<? if($data[icq]) { ?>
<?=$data[icq]?>
<? } else { ?>
회원정보가 아직 기입되지 않았습니다.
<? } ?>
<? if($data[aol]) { ?>
 | <?=$data[aol]?>
<? } ?>
<? if($data[msn]) { ?>
 | <?=$data[msn]?>
<? } ?>
  </td></tr>
  <tr>
        <td colspan=2 height=1 bgcolor=#eeeeee></td>
</tr>

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

헉! 맘대로 짜다가 보니 <? ?> 이게 몇번이나 들어간겨? ㅋㅋ
지금 소스를 복사하다가 보니.. 좀 찝찝하지만,
그대로 적었습니다.


자~~~ 이까지해서 회원들이 사용하는 시트는 모두 완성 되었네요..

입력하고 고치고, 출력해서 보여주는 것들은 모두 해결되었습니다.

다음으로는, 관리자 메뉴에서 보여주고, 고칠 수 있게 해야하는데요..

아이고 힘들다..



회원관리의 회원목록부분인 admin_view_member.php은 아래와 같이 바꿔주세요..
다만, <td> sheet때문에 다른곳에 적혀앴는colspan수치는 조정하셔야 합니다.
이부분은 html기초이기에 그냥 뛰어넘습니다.

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

<tr align=center height=25 bgcolor=#a0a0a0>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>No.</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;><a href=.javascript onclick="return select();">선택</a></td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>회원번호</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>유저명</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>이름</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>기본정보</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>학번정보</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>상태정보</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>레벨</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>점수</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>가입일자</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>수정</td>
  <td style=font-family:Tahoma;font-size:8pt;font-weight:bold;>삭제</td>
</tr>

  <form method=post action=<?=$PHP_SELF?> name=write>
  <input type=hidden name=page value=<?=$page?>>
  <input type=hidden name=keykind value=<?=$keykind?>>
  <input type=hidden name=keyword value=<?=$keyword?>>
  <input type=hidden name=like value=<?=$like?>>
  <input type=hidden name=group_no value=<?=$group_no?>>
  <input type=hidden name=exec value=<?=$exec?>>
  <input type=hidden name=page_num value=<?=$page_num?>>
  <input type=hidden name=exec2 value="">

<?
  while($data=mysql_fetch_array($result))
  {
  if($data[level]==1) $grant_color="<font color=red><b>";
  elseif($data[level]==2) $grant_color="<font color=blue><b>";
  elseif($data[level]==3) $grant_color="<font color=green><b>";
  else $grant_color="";

  echo"
        <tr align=center height=23 bgcolor=#e0e0e0>
          <td style=font-family:Tahoma;font-size:7pt;>$number</td>
          <td><input type=checkbox name=cart[] value=$data[no]></td>
          <td style=font-family:Tahoma;font-size:8pt;>$data[no]</td>
          <td style=font-family:Tahoma;font-size:8pt;>$data[user_id]</td>
          <td><img src=images/t.gif height=3><br>$data[name] </td>
          <td style=font-family:Tahoma;font-size:8pt;>$data[icq]</td>
          <td style=font-family:Tahoma;font-size:8pt;>$data[aol]</td>
          <td style=font-family:Tahoma;font-size:8pt;>$data[msn]</td>
          <td style=font-family:Tahoma;font-size:8pt;>$grant_color$data[level]</td>
          <td style=font-family:Tahoma;font-size:8pt;>".($data[point1]*10+$data[point2])." <font style=font-size:7pt;>(".$data[point1]."/".$data[point2].")</font></td>
          <td style=font-family:Tahoma;font-size:8pt;>".date("Y-m-d",$data[reg_date])."</td>
          <td style=font-family:Tahoma;font-size:8pt;><a href=$PHP_SELF?exec=$exec&group_no=$group_no&exec2=modify&page=$page&no=$data[no]&keyword=$keyword&keykind=$keykind&like=$like&page_num=$page_num>Modify</a></td>
          <td style=font-family:Tahoma;font-size:8pt;>";
  if($data[no]>1) echo"<a href=$PHP_SELF?exec=$exec&group_no=$group_no&exec2=del&keyword=$keyword&page=$page&no=$data[no]$href onclick=\\"return confirm('삭제하시겠습니까?')\\">Delete</a>"; else echo" ";
  echo"  </td>
        </tr>
        ";
  $number--;
  }
?>
<tr>

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

그냥 중간부분을 카피해서 위에 다 적어놓았네요.. 알아서 고쳐주세요..

admin_view_member.php 밑부분에 검색하는 부분도 고치실 분은 고치세요..
전 아래와 같이 고쳤습니다.

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

                <select name=keykind>
                        <option value="name" <?if($keykind=="name")echo "selected";?>>이름</option>
                        <option value="user_id" <?if($keykind=="user_id")echo "selected";?>>아이디</option>
                        <option value="no" <?if($keykind=="no")echo "selected";?>>회원번호</option>
                        <option value="icq" <?if($keykind=="icq")echo "selected";?>>기본정보</option>
                        <option value="aol" <?if($keykind=="aol")echo "selected";?>>학번정보</option>
                        <option value="msn" <?if($keykind=="msn")echo "selected";?>>상태정보</option>
                        <option value="homepage" <?if($keykind=="homepage")echo "selected";?>>홈페이지</option>
                        <option value="email" <?if($keykind=="email")echo "selected";?>>이메일</option>
                </select>

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

이젠, 회원정보수정부분도 있죠?

admin_modify_member.php부분입니다.
icq / aol / msn 출력부분은 삭제는 당연할거구요.. 적당한 위치에 아래의 소스를 집어넣어줍니다.

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

  <tr height=22 align=center>
    <td bgcolor=#a0a0a0 align=right style=font-family:Tahoma;font-size:8pt;font-weight:bold;>회원정보  </td>
    <td align=left bgcolor=#e0e0e0>
 
<?
if ($member_data[icq]) {
echo $member_data[icq];
} else {
echo "회원정보가 없습니다. 기록하여주세요!";
}
if ($member_data[aol]) {
echo " | ";
echo $member_data[aol];
}
if ($member_data[msn]) {
echo " | ";
echo $member_data[msn];
}
?>
<br>
 
<select name="icq" onchange="icq_sel(write.icq.value);">
<option value="<?=$member_data[icq]?>" selected>기본정보</option>
<?
$opArr = array('일반인','미얀마어과재학생','미얀마어과졸업생','미얀마어과교수');
foreach($opArr as $val) echo "<option value='".$val."'>".$val."</option>";
?>
</select>
<select name="aol">
<option value="<?=$member_data[aol]?>" selected>학번정보</option>
</select>
<select name="msn">
<option value="<?=$member_data[msn]?>" selected>상태정보</option>
</select>
 
    </td>
  </tr>
 
--------------------------------

이제 거희 끝났네요..

admin_modify_member_join.php부분에서는 능력되는데로 고치시면 되구요..
그냥 icq / aol / msn 의 이름만 바꿔주는 정도로도 됩니다.

제가 빠지고 설명 안한 부분도 있을지 모르겠는데요..

사소한 팁으로는, 시작하는 홈페이지가 아니라, 원래 가입된 회원의 정보는 없기에,
리플레쉬 될때마다 계속적으로 정보바꿔달라는 메세지를 띄워줘야겠네요..
아래와 같습니다.

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

<? if(($member[level]<=9)&&(!$member[icq])) { ?>
<script>
        alert("회원기본정보가 기록되지 않았습니다.\\n\\n회원정보수정에서 기록하여주세요!  ");
</script>
<? } ?>

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

이걸 푸터의 끝부분에 적으면 됩니다.

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

음..

이팁을 한번 시도해 보시겠습니까?
백업은 필수로 시켜놓고.. 도전해보시길..

이까지입니다. ^^

완성된 소스의 확인은

http://www.emyanmar.net
에서 해보세요!


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

<변경사항> 2006년 5월 13일

윗부분에서 admin_modify_member.php부분을 잘못기록해둬서..
새로 고쳤놨습니다.
이전에 이글을 보신분은 새로 보시길 바랍니다.

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

<추가사항> 2006년 5월 13일

빠진 부분도 있었네요..
기본정보를 기록하기 않았을때, 팝업을 띄우고, 기록란으로 이동하는 팁을 추가하셔야 합니다.

member_join.php 149번라인쯤 됩니다.

  if(!write.email.value) {alert("E-Mail을 입력하여 주십시요.");write.email.focus(); return false;}
란을 찾으시고 아래와 같은 소스를 추가해 주시면 됩니다.

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

  if(!write.icq.value) {alert("가입자기본정보를 입력하여 주십시요.");write.icq.focus(); return false;}

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

그러면 아래와 같이 될겁니다.

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

  if(!write.email.value) {alert("E-Mail을 입력하여 주십시요.");write.email.focus(); return false;}
  if(!write.icq.value) {alert("가입자기본정보를 입력하여 주십시요.");write.icq.focus(); return false;}

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

일단 확인한건 이까지 이네요..
소스 수정부분이 워낙 광범위하고, 기록하지 않아서..
빠진 부분도 있지 싶네요..
확인되는데로 업시켜놓도록 하겠습니다.

================================ [이 게시물은 human님에 의해 2007-05-14 17:58:49 bilkboard1에서 복사 됨] [이 게시물은 human님에 의해 2007-05-15 09:09:28 bulk3에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

Total 243건 5 페이지
MySQL Tip 목록
번호 제목 글쓴이 조회 날짜
171 차동박 이름으로 검색 19727 12-19
170 차동박 이름으로 검색 10546 12-16
169 차동박 이름으로 검색 10577 12-14
열람중 차동박 이름으로 검색 19568 12-14
167 차동박 이름으로 검색 18323 11-07
166 차동박 이름으로 검색 10315 11-02
165 차동박 이름으로 검색 17011 10-12
164 차동박 이름으로 검색 17328 10-12
163 차동박 이름으로 검색 17425 10-11
162 차동박 이름으로 검색 18813 10-11
161 차동박 이름으로 검색 30613 10-11
160 차동박 이름으로 검색 17507 10-11
159 차동박 이름으로 검색 21478 10-11
158 차동박 이름으로 검색 18281 10-11
157 차동박 이름으로 검색 18693 09-17
156 차동박 이름으로 검색 17751 09-15
155 차동박 이름으로 검색 27962 08-24
154 차동박 이름으로 검색 17292 08-21
게시물 검색