XpressEngine - 팁 공유 게시판
XpressEngine과 관련된 팁이나 강좌를 소개하는 게시판입니다.
자신이 생각하기에는 아주 사소한 내용이라도 누군가에게는 큰 도움이 될 수 있습니다.
제로보드4 버전의 팁을 공유하고 싶으시다면 여기로~
자신이 생각하기에는 아주 사소한 내용이라도 누군가에게는 큰 도움이 될 수 있습니다.
제로보드4 버전의 팁을 공유하고 싶으시다면 여기로~
글수 611
예전에 주소록 구현 방식을 올렸었는데, 내용 및 코드를 다시 고쳐서 다시 올립니다.
----------------------------------------------------------------------------------------------------
동문회 사이트를 운영 중인데 주소록 기능이 따로 없어 외부 페이지 방식으로 구현해 보았습니다.
추가 회원 정보인 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);
?>
2008.09.16 12:29:11 (*.94.41.89)
잘 안되네요.. connect.php안에 정보는 입력시켰고 절대경로도 넣었는데 또 넣어야 할께 있나요?
print_r($data1); 주석제거 하여도
이거 외에는 아무거두 안나오는데요..
도움 부탁드립니다 ^^
print_r($data1); 주석제거 하여도
(총 회원수 : 명)
| 이름 | 입학/졸업 | 전공 | 전자우편 | 핸드폰 | 회사 |
이거 외에는 아무거두 안나오는데요..
도움 부탁드립니다 ^^
2008.09.20 03:00:23 (*.48.18.249)
(추천수:
1 / 0)
상당히 좋은 팁인데 활용하지 못해 유감입니다.
저의 경우는 노란색의 테이블이 아니라 아예 흰 페이지로만 보이는데 주소를 여러가지로 하여도 마찬가지입니다.
그래도 다른 분들을 위해 몇가지 여쭙겠습니다.
위의 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) 을 주석제거하여 확인 후 아래 필드명 코드 부분 수정 필요 라는 주석문은
위의 소스에서 필드명을 자신의 회원정보의 필드값으로 바꾸라는 말씁이겠지요.
하여간 연구해 보겠습니다만 한 번 더 쉬운 설명이 가능하면 부탁드립니다.
저의 경우는 노란색의 테이블이 아니라 아예 흰 페이지로만 보이는데 주소를 여러가지로 하여도 마찬가지입니다.
그래도 다른 분들을 위해 몇가지 여쭙겠습니다.
위의 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) 을 주석제거하여 확인 후 아래 필드명 코드 부분 수정 필요 라는 주석문은
위의 소스에서 필드명을 자신의 회원정보의 필드값으로 바꾸라는 말씁이겠지요.
하여간 연구해 보겠습니다만 한 번 더 쉬운 설명이 가능하면 부탁드립니다.



