웹마스터 팁

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

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

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

추가 회원 정보인 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);
?>

제목 글쓴이 날짜
블로그, 홈페이지 가입시 자동 입력되는 http:// 없애기 [2] 류영무 2008.09.09
주소록 구현 (외부 페이지) [17] CSLab 2008.09.15
cafe24사용자중 페이지에서 위젯편집시 자바스크립트 에러나시는 분들 [8] 팔공산 2008.10.17
일반 페이지에 로그인(세션) 정보 활용하기 [13] noirzo 2008.11.07
[설문조사] 메인페이지에 넣기와 효율적으로 관리하기 [6] file 빨간발 2008.11.27
홈페이지의 아이콘(favicon)이 어느날 갑자기 사라졌을때... [1] 크르르 2008.11.28
서브홈페이지 만들기 [5] 가리사니 2008.12.09
자신의 홈페이지에 플래시 오락실을 등록 해보자. [2] file 조성우371 2008.12.20
메인 페이지가 백지로 나올 때 이렇게 해보세요. [4] 시금치 2008.12.23
1.1.5 이후 버전 업데이트후 외부페이지에서 다음위젯이 표시안될때~ [3] 정박사닷컴 2009.01.23
페이지 모듈에도 게시판제목 처럼 다는 쉬운방법... [2] 만쓰별(정만) 2009.01.23
외부페이지 또는 파일링크시 글자깨짐 현상 [1] file 소백산 2009.01.31
관리자 페이지 (module=admin) 백지 문제 [5] 개돌 2009.03.17
1.2.0 설치 후 페이지모듈에 위젯사용시 문제 [2] Digitalife 2009.03.17
페이지모듈에서 내용직접추가할때 "본문내이미지조절" 애드온 적용하기 [5] 왜만지냐 2009.03.19
게시판을 활용한 페이지 생성 및 관리 아이디어...(참고) [5] file 빨간발 2009.03.27
홈페이지 접속 속도에 미치는 에드온. [2] jih449 2009.03.27
페이지 및 게시판 메뉴 경로 [2] file 자반튀김 2009.04.15
홈페이지 타이틀이 $user_lang->home ,freeboard등으로 나오는 문제 수정방법(자체해결) [1] 정박사닷컴 2009.04.18
다양한 언어로 홈페이지 서비스하기 - 무식한 방법 [4] 멀리서 2009.04.21