웹마스터 팁

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

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

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

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

제목 글쓴이 날짜
PHP+MSSQL?(수정판) [11] 씨파개 2003.05.10
if 시리즈 2탄.. ㅡㅡ;; [9] 씨파개 2003.05.05
if 시리즈 1탄! [15] 씨파개 2003.04.28
[mics'php] 2. PHP 사용 시스템 구축하기 [3] file TheMics 2003.04.17
개판 오분전 세션 - 5 미친개 2003.04.08
NZEO 이메일 인증 따라하기 [또 수정 --;] [44] file teslaMINT 2003.02.22
야구 자료실 만들기 1 [8] file 한꼬마 2003.01.30
파일 하나로 끝내는-_- NZEO 북마크...-_-a [14] ineal 2003.01.13
웹 인증 보호, 윈도우 로그인 폼 이용 (authenticate) [9] file 둘리나라™ 2003.01.13
[추천 강의] NZEO.COM 에서 쓰는 북마크 구현하기 [5] 東氣號太 2002.12.28
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [2] 손병목 2002.12.25
[동주아빠] PHP 게시판(15강) - 입력 글 DB 저장(1) [3] 손병목 2002.12.25
[동주아빠] PHP 게시판(14강) - 게시판용 테이블 만들기 [3] 손병목 2002.12.25
모닝샵 이용해서 쇼핑몰 만들기 (설치에서 쇼핑몰 환경 설정) [7] file 한꼬마 2002.11.20
초보의 초보를위한 강의 PHP를 활용한 페이지 암호걸기 #3 [10] 아이쿠 2002.11.15
초보의 초보를위한 강의 PHP를 활용한 페이지 암호걸기 #2 [8] 아이쿠 2002.11.13
초보의 초보를위한 강의 PHP를 활용한 페이지 암호걸기 #1 [9] file 아이쿠 2002.11.13
[추천 소스] nzeo에 있는 북마크 기능 구현하기(hot key 는 제외) 초허접 강좌 [10] 정승재 2002.10.22
[PHP 초보에서 중수로 - 쿠키편] 1강 : 쿠키의 이해 [2] file TheMics 2002.08.31
꼭 알아야 하는 4가지 쿼리문 Mr. JH 2002.08.22