웹마스터 팁
page_full_width">
주소록 구현 (외부 페이지)
2008.09.15 07:05
예전에 주소록 구현 방식을 올렸었는데, 내용 및 코드를 다시 고쳐서 다시 올립니다.
----------------------------------------------------------------------------------------------------
동문회 사이트를 운영 중인데 주소록 기능이 따로 없어 외부 페이지 방식으로 구현해 보았습니다.
추가 회원 정보인 extra_vars 값을 unserialize를 배열에 집어넣고 정렬하여 정보를 추출하는 방식입니다.
적당한 이름(예: address.php 와 connect.php)으로 저장한 후 외부 페이지로 등록해서 사용하면 됩니다.
----------------------------------------------------------------------------------------------------
<외부 페이지 등록방법>
1. 계정에 address.php / connect.php 업로드
예) /home/userid/public_html/directory/address.php
/home/userid/public_html/directory/connect.php
2. 관리자 페이지 로그인
3. 서비스형 모듈 섹션의 "외부 페이지" 선택
4. 외부 페이지 "생성"
5. 모듈 이름 입력 및 외부 문서 위치에 업로드한 "address.php" 파일의 경로 입력
예) 모듈 이름 : directory
예) 외부 문서 위치 : /home/userid/public_html/directory/address.php
6. 메뉴 관리자 메뉴로 이동
7. 메뉴 생성 선택 후 "연결 url"로 directory 선택
8. directory 메뉴 생성 확인. 끝!
----------------------------------------------------------------------------------------------------
<파일 소스>
1. address.php 파일
connect.php
----------------------------------------------------------------------------------------------------
동문회 사이트를 운영 중인데 주소록 기능이 따로 없어 외부 페이지 방식으로 구현해 보았습니다.
추가 회원 정보인 extra_vars 값을 unserialize를 배열에 집어넣고 정렬하여 정보를 추출하는 방식입니다.
적당한 이름(예: address.php 와 connect.php)으로 저장한 후 외부 페이지로 등록해서 사용하면 됩니다.
----------------------------------------------------------------------------------------------------
<외부 페이지 등록방법>
1. 계정에 address.php / connect.php 업로드
예) /home/userid/public_html/directory/address.php
/home/userid/public_html/directory/connect.php
2. 관리자 페이지 로그인
3. 서비스형 모듈 섹션의 "외부 페이지" 선택
4. 외부 페이지 "생성"
5. 모듈 이름 입력 및 외부 문서 위치에 업로드한 "address.php" 파일의 경로 입력
예) 모듈 이름 : directory
예) 외부 문서 위치 : /home/userid/public_html/directory/address.php
6. 메뉴 관리자 메뉴로 이동
7. 메뉴 생성 선택 후 "연결 url"로 directory 선택
8. directory 메뉴 생성 확인. 끝!
----------------------------------------------------------------------------------------------------
<파일 소스>
1. address.php 파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | <?php ////////////////////////////////////////////////////////// // 로그인 하지 않은 이용자의 정보 접근 차단을 위해 삽입 // 로그인 하지 않은 상태에서 접근 시 에러 표시 (다른 방법으로 개선 필요) ////////////////////////////////////////////////////////// $logged_info = Context::get( "logged_info" ); if ( $logged_info ) { //echo $logged_info->nick_name."님 로그인 되었습니다"; } else { echo "로그인을 먼저 하십시요" ; } ////////////////////////////////////////////////////////// // 접속 정보 ////////////////////////////////////////////////////////// include "/절대경로/connect.php" ; ////////////////////////////////////////////////////////// $query = "select * from xe_member where user_id != 'webmaster'" ; mysql_query( "set names utf8;" ); $result = mysql_query( $query , $link ); $num_results = mysql_num_rows( $result ); ////////////////////////////////////////////////////////// ?> <p>(총 회원수 : <?php echo $num_results ?>명)</p> <table border= '1' cellspacing= '0' bordercolorlight= 'black' > <tr> <td bgcolor= "#FFFF00" nowrap>이름</td> <td bgcolor= "#FFFF00" nowrap>입학/졸업</td> <td bgcolor= "#FFFF00" nowrap>전공</td> <td bgcolor= "#FFFF00" nowrap>전자우편</td> <td bgcolor= "#FFFF00" nowrap>핸드폰</td> <td bgcolor= "#FFFF00" nowrap>회사</td> </tr> <?php $i = 0; while ( $data = mysql_fetch_array( $result )) { $user_id = $data [user_id]; $user_name = $data [user_name]; $homepage = $data [homepage]; $blog = $data [blog]; $email_address = $data [email_address]; $birthday = $data [birthday]; $last_login = $data [last_login]; $data1 = unserialize( $data [extra_vars]); //------------------------------------------------------- // extra_vars 배열 구조 확인 필요 시 실행 // 필드명은 이용자마다 다르므로 아래 print_r($data1) 을 주석제거하여 확인 후 아래 필드명 코드 부분 수정 필요 //------------------------------------------------------- // echo "<pre>"; //print_r($data1); //------------------------------------------------------- // Object 를 Array로 변환 $array = array (); if ( is_object ( $data1 )) { $array = get_object_vars( $data1 ); } //------------------------------------------------------- $major = trim( $array [major], "\"" ); $entrance = trim( $array [entrance], "\"" ); $graduation = trim( $array [graduation], "\"" ); $handphone = trim( $array [cellphone], "\"" ); $home_tel = trim( $array [home_tel], "\"" ); $home_address = trim( $array [home_address], "\"" ); $msn = trim( $array [msn], "\"" ); $yahoo = trim( $array [yahoo], "\"" ); $introduction = trim( $array [introduction], "\"" ); $job = trim( $array [job], "\"" ); $company = trim( $array [company], "\"" ); if ( $company == NULL) { $company = " " ; } $position = trim( $array [position], "\"" ); //------------------------------------------------------- // entrance 항목 순으로 정렬하기 위해 entrance 항목을 배열에 가장 먼저 삽입 //------------------------------------------------------- $list [ $i ][entrance] = $entrance ; $list [ $i ][user_id] = $user_id ; $list [ $i ][user_name] = $user_name ; $list [ $i ][graduation] = $graduation ; $list [ $i ][major] = $major ; $list [ $i ][email_address] = $email_address ; $list [ $i ][handphone] = $handphone ; $list [ $i ][company] = $company ; $list [ $i ][job] = $job ; //////////////////////////////////////////////////////////////////////// $i ++; } mysql_free_result( $result ); // Sort (Order by entrance) sort( $list ); for ( $j = 0; $j < $i ; $j ++) { $entrance = $list [ $j ][entrance]; $user_id = $list [ $j ][user_id]; $user_name = $list [ $j ][user_name]; $graduation = $list [ $j ][graduation]; $major = $list [ $j ][major]; $email_address = $list [ $j ][email_address]; $handphone = $list [ $j ][handphone]; $company = $list [ $j ][company]; $job = $list [ $j ][job]; if ( $entrance % 3 == 0) { echo "<tr> <td nowrap bgcolor=#FFFFCC> $user_name </td> <td bgcolor=#FFFFCC> $entrance / $graduation </td> <td bgcolor=#FFFFCC> $major </td> <td bgcolor=#FFFFCC><small> $email_address </td> <td bgcolor=#FFFFCC> $handphone </td> <td bgcolor=#FFFFCC> $company </td> </tr>"; } else if ( $entrance % 3 == 1) { echo "<tr> <td nowrap bgcolor=#CCFFCC> $user_name </td> <td bgcolor=#CCFFCC> $entrance / $graduation </td> <td bgcolor=#CCFFCC> $major </td> <td bgcolor=#CCFFCC><small> $email_address </td> <td bgcolor=#CCFFCC> $handphone </td> <td bgcolor=#CCFFCC> $company </td> </tr>"; } else if ( $entrance % 3 == 2) { echo "<tr> <td nowrap bgcolor=#FFCC00> $user_name </td> <td bgcolor=#FFCC00> $entrance / $graduation </td> <td bgcolor=#FFCC00> $major </td> <td bgcolor=#FFCC00><small> $email_address </td> <td bgcolor=#FFCC00> $handphone </td> <td bgcolor=#FFCC00> $company </td> </tr>"; } else { echo "<tr> <td nowrap> $user_name </td> <td > $entrance / $graduation </td> <td > $major </td> <td ><small> $email_address </td> <td > $handphone </td> <td > $company </td> </tr>"; } } ?> </table> |
connect.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <? $mysql_hostname = "localhost" ; $mysql_user = "아이디" ; $mysql_password = "암호" ; $dbname = "DB명" ; $tablename = "xe_member" ; $link = mysql_connect( $mysql_hostname , $mysql_user , $mysql_password ); if (!( $link )) { echo "Error connecting to [<b> $hostname </b>] host , by user $user . Please check your ID and password."; exit (); } mysql_select_db( $dbname , $link ); ?> |
댓글 17
-
좋은팁인거 같습니다. 활용해 보겠습니다.
-
박형근711
2008.09.16 12:29
잘 안되네요.. connect.php안에 정보는 입력시켰고 절대경로도 넣었는데 또 넣어야 할께 있나요?
print_r($data1); 주석제거 하여도(총 회원수 : 명)
이름 입학/졸업 전공 전자우편 핸드폰 회사
이거 외에는 아무거두 안나오는데요..
도움 부탁드립니다 ^^ -
예닮지기
2008.09.16 15:44
외부페이지 외부문서 위치를
상대경로로 바꿔보세요.
이렇케요 ./address.php -
박형근711
2008.09.16 18:32
-
daniel28
2008.09.17 09:48
파일 address.php에 있는
include "/절대경로/connect.php"
파일 이름(connect.php)과
저장한 파일 이름(connect.php)이 동일한지 확인해 보시고,
그래도 되지 않으면 웹호스팅 업체의 문제일 수 있습니다. -
박형근711
2008.09.17 12:52
넵 이제 되네요.. "절대경로"를 그냥 보통 주소로 넣었더니 안되던거였어요 ^^ 감사합니다. ~ -
박형근711
2008.09.18 07:59
이름순 등으로 정렬할수도 있을까요? -
OrionRigel
2008.09.18 11:26
address.php 안에보면 정렬순서를 정해놨네요
이름을 entrance위쪽으로 이동시키면 되네요
93줄과 95줄 위치를 바꾸세요 -
kitian
2008.09.18 20:57
앗 그렇군요 ~ 감사합니다~^^ -
주박사
2008.09.20 03:00
상당히 좋은 팁인데 활용하지 못해 유감입니다.
저의 경우는 노란색의 테이블이 아니라 아예 흰 페이지로만 보이는데 주소를 여러가지로 하여도 마찬가지입니다.
그래도 다른 분들을 위해 몇가지 여쭙겠습니다.
위의 php 소스에
// extra_vars 배열 구조 확인 필요 시 실행
// 필드명은 이용자마다 다르므로 아래 print_r($data1) 을 주석제거하여 확인 후 아래 필드명 코드 부분 수정 필요
//-------------------------------------------------------
//echo "<pre>";
//print_r($data1);
여기에서 위의 echo와 print 2개를 주석제거 해야하는지 print만 주석제거 해야하는지요.
그냥 해보면 되겠지만 흰 페이지로만 보여서 혹시나 해서 여쭙니다.
//-------------------------------------------------------
$major = trim($array[major], "\"");
$entrance = trim($array[entrance], "\"");
$graduation = trim($array[graduation], "\"");
$handphone = trim($array[cellphone], "\"");
$home_tel = trim($array[home_tel], "\"");
$home_address = trim($array[home_address], "\"");
$msn = trim($array[msn], "\"");
$yahoo = trim($array[yahoo], "\"");
$introduction = trim($array[introduction], "\"");
$job = trim($array[job], "\"");
$company = trim($array[company], "\"");
필드명은 이용자마다 다르므로 아래 print_r($data1) 을 주석제거하여 확인 후 아래 필드명 코드 부분 수정 필요 라는 주석문은
위의 소스에서 필드명을 자신의 회원정보의 필드값으로 바꾸라는 말씁이겠지요.
하여간 연구해 보겠습니다만 한 번 더 쉬운 설명이 가능하면 부탁드립니다.
-
OrionRigel
2008.09.22 11:36
저도 홈피2개에서 해보니 똑같이 해도 안되는 곳이 한곳 발생하는데 이유는 모르겠고요
화면이 안보인다니 별 효과가 없겠지만,, 보이게 된다면
//print_r($data1); 저줄에서 앞에 // 만 삭제하시면 자신이 사용하는 변수명이 나옵니다.
그걸 수정할때 참고하라고 한것 같아요.
출력은 아래쪽에서 테이블로 하니 그쪽에서 변경하시면 될겁니다. -
김덕호138
2008.10.30 15:54
전화번호에서 ' |@|' 로 나오는데이걸 'ㅡ'로 변경할수 없을가요?
-
위크니
2008.12.14 00:43
페이지의 한글이 깨지는데.. 이건 브라우저 문제일까요?
다른 페이지는 잘 나오는데 이상하네요ㅠㅠ -
자이
2008.12.25 01:11
파일을 저장하실 때 인코딩을 UTF-8 형식으로 하세요. -
박순동
2009.04.03 11:22
address.php 파일을 다운받으려는데 첨부화일을 어떻게 다운받는지 모르겠네요
소스를 그냥 긁어서 사용하나요?
앞에 붙어있는 줄번호까지 같이 들어가는데요.
밑의 connect.php파일은 잘 됩니다만....에고 -
차차차
2009.05.21 15:57
첨부파일
*** 절대경로 수정해서 사용하세요.
-
팬텀
2009.07.02 10:58
특정 그룹만 보여주고 싶은데 가능할까요?
제목 | 글쓴이 | 날짜 |
---|---|---|
[펌] Apache rewrite Module [8] | ☜ TeRy ☞ | 2008.02.22 |
XE에 맞춤법 검사기를 링크해보자! [2] | 개돌 | 2009.05.14 |
[해결됨]첨부파일 등록이 안될때 (플래시 플레이어 버전문제)
[29]
[1] ![]() | 똑디 | 2008.10.27 |
한글도메인(.kr) 사용시 링크걸기 [3] | serendip | 2009.02.04 |
윈도우즈 서버2008에 설치하고 게시판에 대용량파일 업로드 안되시는 분들은... | 헨리지 | 2009.07.04 |
주소록 구현 (외부 페이지) [17] | CSLab | 2008.09.15 |
1.2 업데이트후, 모듈 업데이트를 클릭해도 계속 업데이트 버튼이 남는 경우 [4] | heesang | 2009.03.27 |
게시글 본문 좌, 우측에 div 내용 넣기(수정)
[5]
![]() | 라르게덴 | 2008.07.18 |
보낸 쪽지함에서 쪽지 내용 안에 회원 아이콘이 제대로 표시 되지 않을때.. | 절망린 | 2009.06.24 |
쪽지 답글 보내기 원본 내용 삭제 | 절망린 | 2009.06.24 |
회원 확장 정보를 레이아웃에서 활용하기
[6]
[1] ![]() | mooo | 2008.05.06 |
개인쪽지발송!~ | noirzo | 2009.06.23 |
게시판 스킨에서 확장 변수에 값이 없을 경우 해당 항목 표시하지 않기 [6] | SMaker | 2009.05.04 |
사이트 접속시 자동으로 www. 붙어서 접속되게 하기 [9] | 다케루 | 2008.10.08 |
게시물 읽을 때 하단에 목록 보이지 않게 하기 [3] | 정은기 | 2007.09.17 |
XpressEngine 1.2.2용 배경음악 틀 [4] | 마빈박사359 | 2009.05.10 |
확장변수 별로 작성 및 열람 권한 설정하기 [7] | 대암지기 | 2008.10.11 |
스프링노트 연동기를 써 보았습니다. | amyjang | 2009.04.23 |
게시판 스킨에서 조회수, 추천수, 최근 수정일 외 항목도 정렬가능하게 하기 | SMaker | 2009.06.11 |
최근 이미지 출력 위젯에서 글 제목 출력을 선택항목으로 바꾸기 [6] | 必得力 | 2007.10.17 |