웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->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 파일
<?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
<? $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); ?>
댓글 17
-
때린데 또때려
2008.09.15 13:43
좋은팁인거 같습니다. 활용해 보겠습니다. -
박형근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 |