웹마스터 팁

예전에 주소록 구현 방식을 올렸었는데, 내용 및 코드를 다시 고쳐서 다시 올립니다.

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

동문회 사이트를 운영 중인데 주소록 기능이 따로 없어 외부 페이지 방식으로 구현해 보았습니다.

추가 회원 정보인 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 = "&nbsp;";
        }
        $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);
?>

제목 글쓴이 날짜
[펌] Apache rewrite Module [8] ☜ TeRy ☞ 2008.02.22
XE에 맞춤법 검사기를 링크해보자! [2] 개돌 2009.05.14
[해결됨]첨부파일 등록이 안될때 (플래시 플레이어 버전문제) [29] [1] file 똑디 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] file 라르게덴 2008.07.18
보낸 쪽지함에서 쪽지 내용 안에 회원 아이콘이 제대로 표시 되지 않을때.. 절망린 2009.06.24
쪽지 답글 보내기 원본 내용 삭제 절망린 2009.06.24
회원 확장 정보를 레이아웃에서 활용하기 [6] [1] file 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