외부페이지에서 특정회원의 글 가져오기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

외부페이지에서 특정회원의 글 가져오기 정보

외부페이지에서 특정회원의 글 가져오기

첨부파일

get_user_article.zip (1.3K) 53회 다운로드 2007-06-14 14:38:05

본문

간단하게 만들어봣습니다.
 
아래의 소스를 get_user_article.php로 그누보드 최상단에 저장하면 되겠습니다.
 
<?php
 
include_once './_common.php';
 
//환경설정, [읽어올 그누아이디][읽어올 그누게시판 아이디] ='제목';
//유창화
$g4['user_article']['dbckdghk']['pl_php'] = '웹플웹디 > PHP';
$g4['user_article']['dbckdghk']['cm_free'] = '자유게시판';
 
//헐랭이님
$g4['user_article']['kcho07']['g4_tiptech'] = '그누보드4 > 그누4팁';
$g4['user_article']['kcho07']['cm_free'] = '자유게시판';
 
if (empty($_GET['mb_id'])) {
  echo '정상적인 사용이 아님';
  exit;
}
 
if (count($g4['user_article']) == 0) {
  echo '환경설정이 되지 않았습니다.';
  exit;
}
 
$read_board = $g4['user_article'][$_GET['mb_id']];
if (count($read_board) == 0) {
  echo $_GET['mb_id'] . '에 매치 되는 설정이 없습니다.';
  exit;
}
 
//읽어오기, 간단하게 구현
$array = Array();
foreach($read_board as $temp_bo_table => $val){
 
  $cnt = 0;
  for($i = 1; $i < 100; $i++){
 
    $temp_text = '';
    $fp = fsockopen ('sir.co.kr', 80, $errno, $errstr, 30);
    if (!empty($fp)) {
 
      fputs ($fp, "GET /bbs/board.php?bo_table=" . $temp_bo_table . "&sca=&sfl=mb_id%2C1&stx=" . $_GET['mb_id'] . "&sop=and&page=" . $i . " HTTP/1.0\r\n\r\n");
 
      while (!feof($fp)) {
 
        $temp_text .= fgets ($fp,128);
      }
      fclose ($fp);
    }
 
    if (!empty($temp_text)){
 
      preg_match_all("`(\[<a [^>]*href *= *'(\.\./bbs/board\.php\?bo_table=" . $temp_bo_table . "&sca=[^']*)'[^>]*>([^<]+)</a>\].*)?<a [^>]*href *= *'(\.\./bbs/board\.php\?bo_table=" . $temp_bo_table . "&wr_id=[0-9]+&sca=&sfl=mb_id%2C1&stx=" . $_GET['mb_id'] . "&sop=and&page=[^']*)'[^>]*>([^<]+)</a>`Ui", $temp_text, $matches);
 
      if (!is_array($matches) || empty($matches[1])) {
 
        break;
      }
      else {
 
        foreach($matches[4] as $key2=>$val2){
 
          $array[$temp_bo_table][$cnt]['cate_url'] = str_replace('../', 'http://sir.co.kr/', $matches[2][$key2]);
          $array[$temp_bo_table][$cnt]['cate'] = trim($matches[3][$key2]);
          $array[$temp_bo_table][$cnt]['article_url'] = str_replace('../', 'http://sir.co.kr/', $matches[4][$key2]);
          $array[$temp_bo_table][$cnt]['article'] = trim(strip_tags($matches[5][$key2]));
          $cnt++;
        }
      }
    }
    else {
 
      break;
    }
  }
}
foreach($read_board as $temp_bo_table => $val){
 
  echo "<b>[$val]</b><br>";
  if (is_array($array[$temp_bo_table]) && count($array[$temp_bo_table]) > 0){
 
    foreach($array[$temp_bo_table] as $key2 => $val2){
 
      echo "   ";
      if ($val2['cate_url'] && $val2['cate']) echo "[" . $val2['cate'] . "] ";
      echo "<a href='" . $val2['article_url'] . "' target=_blank>" . $val2['article'] . "</a>";
      echo "<br>";
    }
    echo "<br>";
  }
  else {
 
      echo "   등록된 글이 없습니다<br><br>";
  }
}
 
?>
 
테스트url
추천
2
  • 복사

댓글 13개

물론 그 전체적인 틀을 공개해 주셨고,
다양한 응용의 여지는 남겨 주신듯 합니다.
그런데...
페이징 처리 / 시간대별 처리도 적절히 포함시키면 유용할 듯 합니다.
또한 현재의 url을 통한 직접 접근방식도 깔끔한 편이나,
회원 아이디 및 해당 사이트 도메인, 세부 주소(게시판 및 분류 등)도,
input form을 사용해 좀 더 다양화 시킬 수 있다면 좋겠습니다.
(만들 줄 모르거덩요~*)
(전... O을 안 들었습니다.)
(다만 많이 바랬을 뿐입니다. 크~^^;;)
이걸 사용하여 응용할수 있는것은

예를 들어 외부 페이지에서 이회원의 그누보드 활동 사항 보기
같은것을 할수 있습니다.

팀세븐에 팀세븐 회원 닉 클릭하면 그누활동사항이라고 나옵니다.
제가 일전에 올린 캐쉬 시스템 같은것을 활용하면 좀더 빠른결과를 볼수 있습니다.


그런것을 만들수 있습니다.

http://team7.kr/bbs/gnu.php?mb_id=kcho07
© SIRSOFT
현재 페이지 제일 처음으로