주소록을 만들어 봅시다. |
조한식
(Homepage)
|
2002-05-25 03:44:32, 조회 : 4,068, 추천 :
2 |
저는 제가
다니던 대학의 과 학회 홈페이지를 운영하고 있습니다만, 이처럼 소규모
모임의 홈페이지를 운영하다 보면 주소록이 있으면 참 좋겠다는 생각을 많이
하지요..
제가 알기론 제로보드에는 주소록 기능이 없습니다. 제가 사용하는 소스를
공개하면서 주소록을 만드는 법을 설명해 보도록 하지요.. 그냥
플러그인으로 만들어 올리기만 하면 되도록 작업을 할까 했는데, 제가 너무
게을러서요... ^^; 그리고, 무작정 남이 만들어 놓은거 그대로
사용하는 것 보다는 PHP와 MySQL을 배울 겸해서 자신의 상황에 꼭
맞게 사용하는 것이 오히려 더 좋을 듯 해서 그 '방법'을 올리려고
합니다. 소스를 무조건 복사하지 마시고 꼭 본인에 맞게 수정하셔서
사용하세요. 제 능력이 되는 한 본인에 맞게 수정할 수 있도록 도와
드리겠습니다.
먼저 알아 두셔야 할 것은, 위에서 말씀 드렸듯이 소규모이고 오프라인으로
친밀한 관계에 있는 사람들의 홈페이지이므로 주소를 아는 사람도 드물고,
비회원 자격으로 접속한 사람은 주로 회원이 귀찮아서 로그인 하지 않은
경우가 대부분이므로 회원 정보가 공개된다는 허접스럼이 있지만, 비회원도
열람이 가능합니다. (사실 비회원에게 열람 권한을 주지 않는 것은 무척
쉽죠)
또, 제가 사용하는 홈페이지에서는 학번이 참 중요합니다. 회원가입시
학번을 입력 받도록 해서 그 순서로 목록이 뿌려지도록 했고, 소규모라
따로 검색을 하지 않고 학번을 선택하도록 했습니다. (역시 검색창을 다는
것도 그다지 어렵지는 않습니다 ^^;)
그리고 저는 오프라인 모임의 회원이 아니지만 온라인 회원인 경우도 있기
때문에 회원의 레벨을 두 부류로 나누었고 상위레벨(오프라인/온라인
회원)의 회원만 목록에 보이도록 했습니다.
제가 사용한 환경은,
윈도우2000 SP2 build 2195 / IIS 5.0 / PHP
4.0.6(ZendOptimizer는 설치 안했습니다) / MySQL
3.23.32 / zeroboard 4.1
이렇습니다.
이 소스는 제가 리눅스 서버에서 사용하던 것(제로보드 기반이 아닌)을
거의 그대로 옮겨 온 것이기 때문에 리눅스에서도 별 문제 없으리라
생각합니다.
그리고 소스를 보시면 아시겠지만, 제가 디자인쪽으로는 전혀 감각이 없어서
무척 단순합니다. 예쁘장하게 꾸며 주실 분 혹시 계시면 정말
좋겠습니다..
이제 소스 설명을 드립니다.
<?
include "head.html"; // 노프레임으로 구성되었기 때문에
삽입된 문서입니다.
include "./board/lib.php"; // 이 파일은 제로보드
디렉토리의 상위디렉토리에 위치합니다.
if(!$connect)
$conect=dbconn(); //
데이터 베이스에 접속합니다.
$scale = 15; // 회원 목록을 화면에
보여 줄 때 1페이지당 보여지는 회원 수
$page_scale = 5; // 1화면당 페이지 수
if (!$start) {$start = 0;}
$page = floor
($start/($scale*$page_scale));
$last = floor ($total/$scale);
// 저는 따로 검색창을 달지 않고 페이지 상단에 학번이 나오고 학번을
클릭했을 때 학번에 해당하는 사람들만 보여 집니다.
// 회원가입 받을 때 회원의 학번 기입하는 란을 추가 했고, 학번은
4자리로 되어 있습니다.
// 회원의 레벨이 5이하가 되어야 주소록에 보여 집니다.
if ($que) { // 학번 별로 보기를
원할 때 해당 학번을 $que라는 변수로 받습니다.
$result=mysql_query("select * from
zetyx_member_table where year=$que &&
level<6", $connect);
}
else { // 학번에 해당하는
변수가 전달되지 않았을 때
$result=mysql_query("select * from
zetyx_member_table where level<6 order
by year desc", $connect);
}
$total = mysql_affected_rows (); // 전체
회원 수입니다.
if($start) $n=$total-$start;
else $n=$total;
echo ("
// 회원주소록이라는
타이틀 그림.
");
// 아래는 위에서 말씀드린 학번별로 보기를 원할 때 클릭합니다.
if($que) echo"[전체] ";
else echo"전체 ";
$tmp_time=date(Y);
// 학번은 4자리 연도고 보여지는 건 2자리(우리가 흔히 부르는)이기
때문에 좀 억지 스럽습니다.
for ($tmp_year=1989; $tmp_year <
$tmp_time+1; $tmp_year++) {
if ($tmp_year==$que) {
if($tmp_year<2000) {
$sort_year=$tmp_year-1900;
echo
("$sort_year ");
} else {
$sort_year=$tmp_year-2000;
echo
("0$sort_year ");
}
}else {
if($tmp_year<2000) {
$sort_year=$tmp_year-1900;
echo ("[$sort_year]
");
} else {
$sort_year=$tmp_year-2000;
echo ("[0$sort_year]
");
}
}
}
// 아래는 제가 회원 주소록에 뽑아 쓰는 데이터입니다. 꼭 필요한 것만
보여 주도록 한다고 한 거죠.
echo ("
|
학번
|
이름(id)
|
유선전화
|
무선전화
|
이메일
|
쪽지
|
");
if ($sc_year < 10) echo
("0$sc_year"); // 00, 01, 02학번이죠.
else echo
("$sc_year"); // 80년대,
90년대 학번입니다.
echo ("
|
$data[name]($data[user_id])
// 이름(아이디)의 형식으로 보여지고 클릭했을 때 자세한 회원 정보를
보여주는 창이 뜹니다.
|
$data[home_tel]
// 집전화번호
|
$data[handphone]
// 핸드폰 번호죠..
|
$data[email]
// 이메일 주소를 보여 줍니다. 클릭하면, 폼페일(제가 작성한) 창이
뜨면서 받는 사람 란이 해당 회원으로 채워져 있습니다.
|
// 해당회원에게 쪽지를 보내는 창이 뜹니다.
|
");
if($total > $scale){
if($start+1 >
$scale*$page_scale){
$pre_start = $start -
$scale;
echo ("◀");
}
for ($vj=0; $vj < $page_scale;
$vj++){
$ln = ($page *
$page_scale + $vj) * $scale;
$vk = $page * $page_scale +
$vj+1;
if($ln < $total){
if($ln!=$start){
echo("[$vk] ");
}else{
echo ("$vk ");
}
}
}
if($total >
(($page+1)*$scale*$page_scale)){
$n_start =
($page+1)*$scale*$page_scale;
echo ("▶");
}
}
echo " | ";
include "foot.html"; // 역시 노프레임이기 때문에
삽입한 부분..
?>
이상입니다. 어려울 것 하나도 없지요?
참고로 저는 학번에 해당하는 필드를 추가했죠. 혹시 원하시는 필드를
추가하고자 하실 때 추가하는 방법입니다. 없는 필드를 만드는 것은 저
아래 제가 올린 팁 중에서 "앞으로 X일간 생일을 맞는 사람
보여주기(음력포함)"이라는 팁에 설명을 해 놨으니까 필요하신 분께서는
참고를 하시고요, 지금은 제로보드에 있는 필요 없는 필드를 수정해서
필요한 필드로 사용하는 법을 알려 드리겠습니다.
저는 aol 주소를 입력 받는 부분을 없애고 aol대신 학번을 받도록
수정했습니다. 사실 수정보다는 추가가 조금 더 쉽습니다. ^^;
학번을 추가하려면 먼저, mysql에 칼럼을 변경해야 합니다.
sql을 잘 모르신다고 했는데, 그리 어려운 것 아니니까 해 보세요..
회원정보를 담아두는 테이블에 학번정보를 담는 칼럼을 추가해야 하는데,
기본적으로 입력받도록 되어 있는 테이터 중에서 쓸모 없는 것이 꽤
있으니까 사용하지 않는 것을 바꾸는 게 더 낫겠죠.
mysql에 접속해서 명령을 주면 되지만, 사용자가 mysql 서버에
접속하는 것을 막아 둔 서버가 있다고 하니 그냥 php파일로 만들어서
합시다.
사용하지 않는 aol칼럼을 year로 변경합니다.
<?
include "lib.php";
$connect=dbconn();
mysql_query("alter table
zetyx_member_table change aol year
int(4)", $connect);
echo "aol 칼럼을 year로 수정했습니다.";
?>
이와같은 내용의 임시 php파일을 만들어서 제로보드 디렉토리에 두시고
익스플로러로 불러 오세요.
그러면 aol칼럼이 year로 수정되었습니다.
다음으로 회원가입 폼에 학번을 추가합시다.
member_join.php파일을 여세요.
===============================================================
중간에 입력 내용 확인 하는 부분에 다음을 찾아 학번을 제대로 썼는지
확인하는 내용을 추가합니다.
if(!write.password.value) {alert("비밀번호를
입력하여 주십시요.");write.password.focus();
return false;}
if(!write.password1.value)
{alert("비밀번호 확인을 입력하여
주십시요.");write.password1.focus(); return
false;}
if(write.password.value!=write.password1.value)
{alert("패스워드가 일치하지
않습니다.");write.password.value="";write.password1.value="";
write.password.focus(); return false;}
if(!write.name.value) { alert("이름을
입력하세요"); write.name.focus(); return
false; }
// 이 윗부분이 있는 곳을 찾아 편하신 위치에 아래 부분을 삽입하세요.
if(!write.year.value) { alert("입학년도를
입력하세요"); write.year.value.focus();
return false;} // 학번을 필수로 입력받도록 합니다. 필수로
하지 않으실 꺼라면 삭제하시던가 주석처리 하세요.
// 이 부분은 학번을 올바로 입력했는지 검사합니다. 제가 관리하는
학회는 89학번이 최고학번이라 1980보다 작은 숫자를 입력하거나
2100보다 큰 숫자를 입력하면 오류를 냅니다.
if(write.year.value < 1980 ||
write.year.value > 2100) {
alert('입학년도가 잘못입력되었습니다.');
write.year.value='';
write.year.focus();
return false;
}
그리고 그 아래 직접 html코드가 나오는 부분의 편한 곳에 학번
입력받는 폼을 삽입합니다.
|
입학년도
|
년 (4자리 숫자로 입력하십시오. 예 : 1994 년) |
|
AIM(AOL)
|
> AOL번호를
입력받을수 있습니다 |
입학년도 |
"
class=input
style=border-color:#b0b0b0> |
|
|
|
|
|
글은 인터넷에서 자신을 나타내는 유일한 모습입니다.
상대에게 상처를 주기보다 같이 즐거워 할 수 있는 코멘트 부탁드려요. |
2005-12-17
13:47:24 |
|
|
헙 다른건 좋은데...님 게시판에 이메일이랑 전화번호까지 다
노출되는건...
다른 분들에게 피해가 되지 않을까 싶네요. ㅡㅡ^ 어서 회원만 접근가능하게 하시죠.
아우 깜딱이야.. |
2002-05-25
04:18:31
|
|
|
그동안 찾고있던 소스입니다.
그런데 너무길고 어렵다. 소스를 zip으로 올려시면 안되나요! |
2002-05-25
12:17:01
|
|
|
헉 무지어렵다... |
2002-05-25
12:23:40
|
|
|
Warning: Failed opening
'./board/lib.php' for inclusion
(include_path='.:/usr/local/lib/php') in
/home/01/archlove22/www/board/test.php on line 3
Fatal error: Call to undefined function: dbconn() in
/home/01/archlove22/www/board/test.php on line 4 |
2002-05-25
12:24:51
|
|
|
장지호님.. 위에 읽어 보시면 아시겠지만, 제가 작성한 이
파일은 제로보드보다 한단계 상위 디렉토리에 위치합니다. |
2002-05-25
14:52:07
|
|
|
바보삼형제님.. 걱정해 주셔서 감사합니다.. 저도 여기에
팁을 올리면서 저희 홈페이지 주소가 나오게 되니까 저희 학회원하고 상관없으신 분들이 찾아 오게 되어
비회원에게 공개하지 않아야 하나 고민하고 있었습니다..
물론 아시겠지만 비회원에게 공개 하지 않는 방법은 무척 쉽죠.
파일의 처음 부분의 include "lib.php"; 이 라인 아래에 다음을 삽입하기만 하면 됩니다.
$member=member_info();
if(!$member[no]) {
echo ("
alert('로그인된 회원만 열람 가능합니다.');
history.go(-1);
");
}
제 글을 보고 저희 홈페이지에 들르 시는 분들께서 저희 학회 홈페이지의 내용을 악용하지는 않을꺼라
믿습니다. ^^ |
2002-05-25
15:20:27
|
|
|
아~ 골아프네요~ 혹시 음~ 집주소록과 전화번호 검색기두
만들어 올려줄수있나요??
주소는 미국기준으로 하고요 ,,한글과 영문이름 서치가 되도록...해주면되는데여.
부탁^^* |
2003-08-23
10:07:17
|
|
|
설치가 안되네염 설치되게해주셈 |
2003-09-02
12:48:58
|
|
|
aol 칼럼을 year로 수정했습니다...
이것을 원래대로(원본) 되돌릴려면 어떻해야 하나요....?? ㅠㅠ |
2003-10-18
22:43:41 |
|