주소록과 학번 넣기 소스 > 유익한 싸이트

본문 바로가기
 

주소록과 학번 넣기 소스

페이지 정보

작성자 이름으로 검색 댓글 0건 조회 16,619회 작성일 05-12-17 13:51

본문







주소록을 만들어 봅시다.





조한식


(Homepage)


2002-05-25 03:44:32, 조회 : 4,068, 추천 :
2


t.gif

 
저는 제가
다니던 대학의 과 학회 홈페이지를 운영하고 있습니다만, 이처럼 소규모
모임의 홈페이지를 운영하다 보면 주소록이 있으면 참 좋겠다는 생각을 많이
하지요..



제가 알기론 제로보드에는 주소록 기능이 없습니다. 제가 사용하는 소스를
공개하면서 주소록을 만드는 법을 설명해 보도록 하지요.. 그냥
플러그인으로 만들어 올리기만 하면 되도록 작업을 할까 했는데, 제가 너무
게을러서요... ^^; 그리고, 무작정 남이 만들어 놓은거 그대로
사용하는 것 보다는 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 ("

src=./images/address.jpg> // 회원주소록이라는
타이틀 그림.

href='$PHP_SELF?que=0'>[전체] ";

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 (" href='$PHP_SELF?que=$tmp_year'>[$sort_year]
");

} else {

$sort_year=$tmp_year-2000;


echo (" href='$PHP_SELF?que=$tmp_year'>[0$sort_year]
");

}

}

}

// 아래는 제가 회원 주소록에 뽑아 쓰는 데이터입니다. 꼭 필요한 것만
보여 주도록 한다고 한 거죠.

echo ("



학번



이름(id)




유선전화



무선전화



width='200' height='24'>

이메일



width='40' height='24'>

쪽지





");



// 실제로 데이터베이스에 접속해서 회원 정보를 가져다 보여줍니다.


for($i=$start; $i<$start+$scale; $i++){


if($i < $total){

mysql_data_seek($result,$i);


$data=mysql_fetch_array($result);


if ($data[year] < 2000)
$sc_year = $data[year]-1900;

else $sc_year =
$data[year]-2000;

echo ("

bgcolor='white' align=center
onMouseOver=this.style.backgroundColor='F6F6F6'
onMouseOut=this.style.backgroundColor=''>


align='center' height='20' width='30'>


");

if ($sc_year < 10) echo
("0$sc_year"); // 00, 01, 02학번이죠.

else echo
("$sc_year"); // 80년대,
90년대 학번입니다.

echo ("




align='left' height='24' width='130'>


href=\\".javascript-xPopWin('./board/view_info2.php?member_no=$data[no]',
400,
510)\\">$data[name]($data[user_id])

// 이름(아이디)의 형식으로 보여지고 클릭했을 때 자세한 회원 정보를
보여주는 창이 뜹니다.




align='left' height='24' width='100'>


$data[home_tel]
// 집전화번호




align='left' height='24' width='100'>


$data[handphone]
// 핸드폰 번호죠..




align='left' height='24' width='200'>


href=\\".javascript-xPopWin('./board/mail.php?to_address=$data[email]')\\">$data[email]


// 이메일 주소를 보여 줍니다. 클릭하면, 폼페일(제가 작성한) 창이
뜨면서 받는 사람 란이 해당 회원으로 채워져 있습니다.




align='center' height='24' width='40'>


href=\\".javascript-xPopWin('./board/view_info.php?member_no=$data[no]',
400, 510)\\">memo.gif border=0>

// 해당회원에게 쪽지를 보내는 창이 뜹니다.




"

);

}

}



//집주소는 $data[home_address] 이고, 생일은
$data[birth], MSN은 $data[msn] 등입니다.

적절하게 수정해서 사용하시면 되겠죠.



// 아래 부분은 ◀ 1 [2] [3] ▶ 와 같은 형식으로 페이지 이동
링크를 만듭니다.

echo (" height='20' colspan='7'>");

if($total > $scale){

if($start+1 >
$scale*$page_scale){

$pre_start = $start -
$scale;

echo (" href='$PHP_SELF?start=$pre_start'>◀");


}

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(" href='$PHP_SELF?start=$ln'>[$vk] ");


}else{

echo ("$vk ");


}

}

}

if($total >
(($page+1)*$scale*$page_scale)){

$n_start =
($page+1)*$scale*$page_scale;

echo (" href='$PHP_SELF?start=$n_start'>▶");


}

}

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코드가 나오는 부분의 편한 곳에 학번
입력받는 폼을 삽입합니다.



style=font-family:Tahoma;font-size:8pt;>입학년도


name=year size=4 maxlength=4
style=border-color:#d8b3b3 class=input>
년 (4자리 숫자로 입력하십시오. 예 : 1994 년)






bgcolor="#EBD9D9" align="center"> src="images/t.gif" width="10"
height="1">



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




다음은
member_join_ok.php파일입니다.==========================================================




전달받은 변수를 검사하는 부분이 지나면 입력한 데이터를 mysql에
입력하는 행이 나옵니다.

아래와 같이 aol을 year로 바꿉시다. icq와 msn 사이에
year가 있습니다.



mysql_query("insert into $member_table
(level,group_no,user_id,password,name,email,homepage,icq,year,msn,jumin,comment,job,hobby,home_address,home_tel,office_address,office_tel,handphone,mailing,birth,reg_date,openinfo,open_email,open_homepage,open_icq,open_msn,open_comment,open_job,open_hobby,open_home_address,open_home_tel,open_office_address,open_office_tel,open_handphone,open_birth,open_picture,picture,open_aol)
values
('$group_data[join_level]','$group_data[no]','$user_id',password('$password'),'$name','$email','$homepage','$icq','$year','$msn',password('$jumin'),'$comment','$job','$hobby','$home_address','$home_tel','$office_address','$office_tel','$handphone','$mailing','$birth','$reg_date','$openinfo','$open_email','$open_homepage','$open_icq','$open_msn','$open_comment','$open_job','$open_hobby','$open_home_address','$open_home_tel','$open_office_address','$open_office_tel','$open_handphone','$open_birth','$open_picture','$picture_name','$open_aol')")
or error("회원 데이타 입력시 에러가
발생했습니다
".mysql_error());

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




다음은 관리자 페이지에서 aol부분을 삭제하고 year부분을 등록해야
하겠죠?

admin디렉토리의
admin_modify_member_join.php파일을
엽니다.====================================




아래 부분에 aol관련한 부분은 방금 바꿨으니 필요 없겠죠. 삭제합니다.




style=font-family:Tahoma;font-size:8pt;font-weight:bold>AIM(AOL)


type=checkbox name=use_aol value=1
<?=$check[$data[use_aol]]?>> AOL번호를
입력받을수 있습니다





학번을 입력받는 여부도 선택하도록 하면 mysql의 admin관련
테이블도 수정해야 하니까 그냥 학번은 필수입력사항으로 합니다. ㅡㅡ; 뭐
정 선택하고 싶으시면 위와 비슷하게 mysql 칼럼 수정하고 변수
전달받아 1이냐 0이냐 확인해서 member_join.php파일에
if문을 삽입하면 됩니다. 저는 어짜피 필수로 할 생각이어서
생략했습니다.

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




다음은 admin/admin_modify_member.php파일을
수정합시다.========================================


처음 부분에 입력사항 체크 하는 부분에 학번을 점검하도록 다음과 같이
추가합니다.

function check_submit()

{

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;}

if(write.year.value < 1980 ||
write.year.value > 2100) {

alert('입학년도가 잘못입력되었습니다.');

write.year.value='';

write.year.focus();

return false;

}



그리고 쭉 내려가다가 화면에 뿌려주는 html코드가 나오는 부분에 적당한
위치에 다음을 추가합니다.





style=font-family:Tahoma;font-size:8pt;font-weight:bold;>입학년도



maxlength=4
value="<?=$member_data[year]?>"
class=input
style=border-color:#b0b0b0>





이 파일에도 aol관련한 부분은 삭제하는 것이 좋겠죠? 다시 적지
않겠습니다.

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




마지막으로 admin_exec_member.php파일을
수정합니다.============================================




중간부분에 회원정보 변경하는 부분이라는 주석 설명이 있는데 그 아래
적당한 곳에 다음 문구를 삽입합니다.



if($year) $que.=",year=$year";



역시 aol관련한 것은 삭제하는 것이 좋겠죠?

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




자, 여기까지입니다.

칼럼하나 수정하는데 잔손이 참 많이 간다는 느낌이 드시죠?



처음 부분에서도 말씀 드렸지만, 제가 사용하는 용도와 100% 꼭 맞는
분은 아마 없을껍니다. 작은 것 하나라도 본인에 맞게 수정하셔야 할텐데,
PHP를 배운다는 생각으로 함수 하나하나를 이해하도록 하시길 바랍니다.



 







t.gif

 

t.gif

t.gif

 

바른생활 NZEO


t.gif
글은 인터넷에서 자신을 나타내는 유일한 모습입니다.

상대에게 상처를 주기보다 같이 즐거워 할 수 있는 코멘트 부탁드려요.
2005-12-17

13:47:24

t.gif

 

t.gif

t.gif

 



바보삼형제


t.gif

헙 다른건 좋은데...님 게시판에 이메일이랑 전화번호까지 다
노출되는건...

다른 분들에게 피해가 되지 않을까 싶네요. ㅡㅡ^ 어서 회원만 접근가능하게 하시죠.

아우 깜딱이야..
2002-05-25

04:18:31


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



장지호


t.gif

그동안 찾고있던 소스입니다.

그런데 너무길고 어렵다. 소스를 zip으로 올려시면 안되나요!
2002-05-25

12:17:01


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



장지호


t.gif

헉 무지어렵다...
2002-05-25

12:23:40


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



장지호


t.gif

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


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



조한식


t.gif

장지호님.. 위에 읽어 보시면 아시겠지만, 제가 작성한 이
파일은 제로보드보다 한단계 상위 디렉토리에 위치합니다.
2002-05-25

14:52:07


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



조한식


t.gif

바보삼형제님.. 걱정해 주셔서 감사합니다.. 저도 여기에
팁을 올리면서 저희 홈페이지 주소가 나오게 되니까 저희 학회원하고 상관없으신 분들이 찾아 오게 되어
비회원에게 공개하지 않아야 하나 고민하고 있었습니다..



물론 아시겠지만 비회원에게 공개 하지 않는 방법은 무척 쉽죠.

파일의 처음 부분의 include "lib.php"; 이 라인 아래에 다음을 삽입하기만 하면 됩니다.




$member=member_info();

if(!$member[no]) {

echo ("



alert('로그인된 회원만 열람 가능합니다.');

history.go(-1);



");

}



제 글을 보고 저희 홈페이지에 들르 시는 분들께서 저희 학회 홈페이지의 내용을 악용하지는 않을꺼라
믿습니다. ^^
2002-05-25

15:20:27


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



김 샨


t.gif

아~ 골아프네요~ 혹시 음~ 집주소록과 전화번호 검색기두
만들어 올려줄수있나요??

주소는 미국기준으로 하고요 ,,한글과 영문이름 서치가 되도록...해주면되는데여.

부탁^^*
2003-08-23

10:07:17


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



김 샨


t.gif

설치가 안되네염 설치되게해주셈
2003-09-02

12:48:58


border="0" src="http://www.nzeo.com/bbs/skin/nzeo_ver4_bbs/del.gif"

t.gif

 

t.gif

t.gif

 



jayken


t.gif

aol 칼럼을 year로 수정했습니다...

이것을 원래대로(원본) 되돌릴려면 어떻해야 하나요....?? ㅠㅠ
2003-10-18

22:43:41







댓글목록

등록된 댓글이 없습니다.

Total 224건 8 페이지
유익한 싸이트 목록
번호 제목 글쓴이 조회 날짜
98 이름으로 검색 13569 12-27
97 이름으로 검색 16192 12-27
96 이름으로 검색 8191 12-27
95 이름으로 검색 14340 12-27
94 이름으로 검색 8151 12-27
93 이름으로 검색 8090 08-07
열람중 이름으로 검색 16620 12-17
91 이름으로 검색 15023 12-01
90 이름으로 검색 8675 11-27
89 이름으로 검색 14250 11-24
88 이름으로 검색 14759 11-24
87 이름으로 검색 9 11-21
86 이름으로 검색 13183 10-29
85 이름으로 검색 13507 10-28
84 이름으로 검색 15768 10-28
83 이름으로 검색 13237 10-28
82 이름으로 검색 17843 10-28
81 이름으로 검색 7969 10-27
게시물 검색