웹마스터 팁

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

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

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

추가 회원 정보인 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 파일

<?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

<?
$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. <br> Please check your ID and password.";
        exit();
}
mysql_select_db($dbname, $link);
?>

제목 글쓴이 날짜
한 페이지(화면)에 두개(2개)의 모듈(게시판 등)을 넣는 법 [6] 황건순 2008.08.25
음악넣는 BGM코드 70종류 입니다 [1] 푸른커튼 2008.08.25
댓글(코멘트) 입력창에 이미지 넣기 [19] file skyatc 2008.08.29
밑에 페이지 네비게이션 수정 (다음10개, 이전10개등으로) [6] file Clanss 2008.08.29
메인화면에 플래시 쉽게 삽입하는 방법.. [12] 청개구리00 2008.08.30
문서 카테고리를 메뉴에 적용하기 위한 레이아웃 수정 팁과 개념토론 [7] 제베 2008.08.31
원하는 위치에 구글 (맞춤)검색창 달기 [2] 다케루 2008.09.02
각 리스트형 위젯에 페이지 기능을 달자. [10] 라르게덴 2008.09.02
[우클릭 및 드레그 방지법] 및 [방지된 홈페이지 해재법] >0< [7] 이홍석295 2008.09.03
카멜레온 최근글 위젯 클릭시 새창 팁 가랑바람 2008.09.04
회원 포인트 선물 하기 등 포인트 변경시 바로 적용 방법 한꼬마 2008.09.06
동일서버내 페이지에서 로그인정보 활용하기... [4] 수로 2008.09.06
다음카페에 끊김없이 음악나오게 하기 푸른커튼 2008.09.06
등록하시겠습니까? 등록할까요? 안 나오고 바로 글 등록되게 하는 법 [6] 황건순 2008.09.08
블로그, 홈페이지 가입시 자동 입력되는 http:// 없애기 [2] 류영무 2008.09.09
IP 주소 4자리수 모두 공개하는 방법 [1] 블루파티 2008.09.11
에디터 9pt 추가 및 에디터에도 웹폰트 보이게 하기. [13] file 욜리 2008.09.11
사진 한꺼번에 일괄적으로 올리기 [4] 안정수650 2008.09.12
게시판 에디터 폰트 글자(글씨)크기 변경하는 법 씨에씨에 2008.09.12
주소록 구현 (외부 페이지) [17] CSLab 2008.09.15