Trackback 클래스

Trackback 클래스는 Trackback 데이터를 전송하고 수신할 수 있는 함수를 제공합니다.

Trackback에 익숙하지 않다면 여기에서 자세한 정보를 찾을 수 있습니다.

Trackback 클래스 사용

클래스 초기화

CodeIgniter의 대부분의 클래스와 마찬가지로 Trackback 클래스는 컨트롤러에서 $this->load->library() 메소드를 사용하여 초기화합니다:

$this->load->library('trackback');

로드되면 다음을 사용하여 Trackback 라이브러리 객체에 접근할 수 있습니다:

$this->trackback

Trackback 전송

다음 예시와 유사한 코드를 사용하여 컨트롤러 함수 중 하나에서 Trackback을 전송할 수 있습니다:

$this->load->library('trackback');

$tb_data = array(
        'ping_url'  => 'http://example.com/trackback/456',
        'url'       => 'http://www.my-example.com/blog/entry/123',
        'title'     => 'The Title of My Entry',
        'excerpt'   => 'The entry content.',
        'blog_name' => 'My Blog Name',
        'charset'   => 'utf-8'
);

if ( ! $this->trackback->send($tb_data))
{
        echo $this->trackback->display_errors();
}
else
{
        echo 'Trackback was sent!';
}

배열 데이터 설명:

  • ping_url - Trackback을 전송할 사이트의 URL입니다. 각 URL을 쉼표로 구분하여 여러 URL로 Trackback을 전송할 수 있습니다.

  • url - 웹로그 항목을 볼 수 있는 내 사이트의 URL입니다.

  • title - 웹로그 항목의 제목입니다.

  • excerpt - 웹로그 항목의 내용입니다.

  • blog_name - 웹로그 이름입니다.

  • charset - 웹로그가 작성된 문자 인코딩입니다. 생략하면 UTF-8이 사용됩니다.

참고

Trackback 클래스는 항목의 처음 500자만 자동으로 전송합니다. 또한 모든 HTML을 제거합니다.

Trackback 전송 메소드는 성공 또는 실패 시 TRUE/FALSE(불리언)를 반환합니다. 실패한 경우 다음을 사용하여 오류 메시지를 검색할 수 있습니다:

$this->trackback->display_errors();

Trackback 수신

Trackback을 수신하려면 먼저 웹로그를 생성해야 합니다. 아직 블로그가 없다면 계속할 필요가 없습니다.

Trackback을 수신하는 것은 전송하는 것보다 약간 더 복잡합니다. 저장할 데이터베이스 테이블이 필요하고 수신된 Trackback 데이터의 유효성을 검사해야 하기 때문입니다. 스팸 및 중복 데이터를 방지하기 위해 철저한 유효성 검사 프로세스를 구현하도록 권장합니다. 또한 스팸을 더욱 방지하기 위해 특정 시간 범위 내에서 특정 IP에서 허용하는 Trackback 수를 제한할 수도 있습니다. Trackback을 수신하는 프로세스는 매우 간단합니다. 유효성 검사가 대부분의 노력을 요구합니다.

Ping URL

Trackback을 수락하려면 각 웹로그 항목 옆에 Trackback URL을 표시해야 합니다. 이것이 사람들이 Trackback을 전송하는 데 사용할 URL입니다(이것을 “Ping URL”이라고 합니다).

Ping URL은 Trackback 수신 코드가 있는 컨트롤러 함수를 가리켜야 하며, URL에는 각 특정 항목의 ID 번호가 포함되어야 합니다. Trackback을 수신했을 때 특정 항목과 연관시킬 수 있도록 하기 위해서입니다.

예를 들어, 컨트롤러 클래스가 Trackback이고 수신 함수가 receive인 경우 Ping URL은 다음과 같이 보입니다:

http://example.com/index.php/trackback/receive/entry_id

여기서 entry_id는 각 항목의 개별 ID 번호를 나타냅니다.

Trackback 테이블 생성

Trackback을 수신하려면 먼저 저장할 테이블을 생성해야 합니다. 다음은 해당 테이블의 기본 프로토타입입니다:

CREATE TABLE trackbacks (
        tb_id int(10) unsigned NOT NULL auto_increment,
        entry_id int(10) unsigned NOT NULL default 0,
        url varchar(200) NOT NULL,
        title varchar(100) NOT NULL,
        excerpt text NOT NULL,
        blog_name varchar(100) NOT NULL,
        tb_date int(10) NOT NULL,
        ip_address varchar(45) NOT NULL,
        PRIMARY KEY `tb_id` (`tb_id`),
        KEY `entry_id` (`entry_id`)
);

Trackback 사양은 Trackback에 전송할 정보 4가지(url, title, excerpt, blog_name)만 필요로 하지만, 데이터를 더 유용하게 만들기 위해 위 테이블 스키마에 몇 가지 필드를 추가했습니다(날짜, IP 주소 등).

Trackback 처리

다음은 Trackback을 수신하고 처리하는 방법을 보여주는 예시입니다. 다음 코드는 Trackback을 수신할 컨트롤러 함수 내에서 사용하기 위한 것입니다.:

$this->load->library('trackback');
$this->load->database();

if ($this->uri->segment(3) == FALSE)
{
        $this->trackback->send_error('Unable to determine the entry ID');
}

if ( ! $this->trackback->receive())
{
        $this->trackback->send_error('The Trackback did not contain valid data');
}

$data = array(
        'tb_id'      => '',
        'entry_id'   => $this->uri->segment(3),
        'url'        => $this->trackback->data('url'),
        'title'      => $this->trackback->data('title'),
        'excerpt'    => $this->trackback->data('excerpt'),
        'blog_name'  => $this->trackback->data('blog_name'),
        'tb_date'    => time(),
        'ip_address' => $this->input->ip_address()
);

$sql = $this->db->insert_string('trackbacks', $data);
$this->db->query($sql);

$this->trackback->send_success();

참고:

항목 ID 번호는 URL의 세 번째 세그먼트에서 예상됩니다. 이것은 앞서 제공한 URI 예시를 기반으로 합니다:

http://example.com/index.php/trackback/receive/entry_id

entry_id가 세 번째 URI 세그먼트에 있음을 주목하세요. 다음을 사용하여 검색할 수 있습니다:

$this->uri->segment(3);

위의 Trackback 수신 코드에서 세 번째 세그먼트가 없으면 오류를 발생시킵니다. 유효한 항목 ID 없이는 계속할 이유가 없습니다.

$this->trackback->receive() 함수는 수신된 데이터를 확인하고 필요한 4가지 데이터(url, title, excerpt, blog_name)가 포함되어 있는지 확인하는 유효성 검사 함수입니다. 성공 시 TRUE를, 실패 시 FALSE를 반환합니다. 실패 시 오류 메시지를 발행합니다.

수신된 Trackback 데이터는 다음 함수를 사용하여 검색할 수 있습니다:

$this->trackback->data('item')

여기서 item은 url, title, excerpt, blog_name 중 하나를 나타냅니다.

Trackback 데이터가 성공적으로 수신되면 다음을 사용하여 성공 메시지를 발행합니다:

$this->trackback->send_success();

참고

위 코드에는 데이터 유효성 검사가 포함되어 있지 않으므로 추가하도록 권장합니다.

클래스 레퍼런스

class CI_Trackback
$data = array('url' => '', 'title' => '', 'excerpt' => '', 'blog_name' => '', 'charset' => '')

Trackback 데이터 배열.

$convert_ascii = TRUE

높은 ASCII 및 MS Word 문자를 HTML 엔티티로 변환할지 여부.

send($tb_data)
매개변수:
  • $tb_data (array) – Trackback 데이터

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

Trackback을 전송합니다.

receive()
반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

이 메소드는 수신된 TB 데이터의 유효성을 검사하여 성공 시 TRUE를, 실패 시 FALSE를 반환합니다. 데이터가 유효하면 데이터베이스에 삽입할 수 있도록 $this->data 배열에 설정됩니다.

send_error([$message = 'Incomplete information'])
매개변수:
  • $message (string) – 오류 메시지

반환 형식:

void

오류 메시지와 함께 Trackback 요청에 응답합니다.

참고

이 메소드는 스크립트 실행을 종료합니다.

send_success()
반환 형식:

void

성공 메시지와 함께 Trackback 요청에 응답합니다.

참고

이 메소드는 스크립트 실행을 종료합니다.

data($item)
매개변수:
  • $item (string) – 데이터 키

반환:

데이터 값 또는 찾을 수 없는 경우 빈 문자열

반환 형식:

string

응답 데이터 배열에서 단일 항목을 반환합니다.

process($url, $data)
매개변수:
  • $url (string) – 대상 URL

  • $data (string) – 원시 POST 데이터

반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

소켓 연결을 열고 데이터를 서버로 전달하여 성공 시 TRUE를, 실패 시 FALSE를 반환합니다.

extract_urls($urls)
매개변수:
  • $urls (string) – 쉼표로 구분된 URL 목록

반환:

URL 배열

반환 형식:

array

이 메소드를 사용하면 여러 Trackback을 전송할 수 있습니다. URL 문자열(쉼표 또는 공백으로 구분)을 받아 각 URL을 배열로 넣습니다.

validate_url(&$url)
매개변수:
  • $url (string) – Trackback URL

반환 형식:

void

URL에 아직 없는 경우 http:// 접두사를 추가합니다.

get_id($url)
매개변수:
  • $url (string) – Trackback URL

반환:

URL ID 또는 실패 시 FALSE

반환 형식:

string

Trackback URL의 ID를 찾아 반환하거나 실패 시 FALSE를 반환합니다.

convert_xml($str)
매개변수:
  • $str (string) – 입력 문자열

반환:

변환된 문자열

반환 형식:

string

예약된 XML 문자를 엔티티로 변환합니다.

limit_characters($str[, $n = 500[, $end_char = '…']])
매개변수:
  • $str (string) – 입력 문자열

  • $n (int) – 최대 문자 수

  • $end_char (string) – 문자열 끝에 넣을 문자

반환:

단축된 문자열

반환 형식:

string

문자 수를 기반으로 문자열을 제한합니다. 완전한 단어를 보존합니다.

convert_ascii($str)
매개변수:
  • $str (string) – 입력 문자열

반환:

변환된 문자열

반환 형식:

string

높은 ASCII 텍스트 및 MS Word 특수 문자를 HTML 엔티티로 변환합니다.

set_error($msg)
매개변수:
  • $msg (string) – 오류 메시지

반환 형식:

void

오류 메시지를 설정하고 로그합니다.

display_errors([$open = '<p>'[, $close = '</p>']])
매개변수:
  • $open (string) – 여는 태그

  • $close (string) – 닫는 태그

반환:

HTML 형식의 오류 메시지

반환 형식:

string

HTML 형식의 오류 메시지를 반환하거나 오류가 없으면 빈 문자열을 반환합니다.