여기 없는 것 같아서 퍼왔읍니다.


아래글은 트랙백의 기본개념보다는 windows + asp 환경에서의 기술적 구현을 위해 간단하게 작성된 소스입니다. 따라서 트랙백의 기본개념을 이해하신후 소스를 보시는것이 도움이 되실것입니다.또한 보다 확장적인 서비스를 위해서는 아래 소스외에 더 많은 부분을 추가하셔야 합니다.


1. 트랙백 핑 받기

 

<%


'변수 처리
bidx = Request("bidx")
strTitle = Request("title")
strExcerpt = Request("excerpt")
strURL = Request("url")


'콘텐츠 타입
Response.ContentType = "text/xml"


'변수 확인
If strURL="" or strTitle = "" or bidx = "" Then
 Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
 Response.Write "<response>"
 Response.Write "<error>1</error>"
 Response.Write "<message>Not Enough Arguments.</message>"
 Response.Write "</response>"
 Response.End
End If


'내 블로그에 글이 있는지 확인
If 해당글의수 = 0 Then
 Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
 Response.Write "<response>"
 Response.Write "<error>1</error>"
 Response.Write "<message>Not Exist Post.</message>"
 Response.Write "</response>"
 Response.End
End If


set rs = Server.CreateObject("ADODB.Recordset")
with rs
.Open trackback_table,접근문자열,adOpenStatic,adLockPessimistic,adCmdTable
.addnew
.fields ("글번호 필드명") = opt_insert_text (bidx)
.fields ("주소 필드명") = opt_insert_text (strURL)
.fields ("제목 필드명") = opt_insert_text (strTitle)
.fields ("내용 필드명") = opt_insert_text (strExcerpt)
.fields ("날짜") = now
.update

.close
end with

set rs = nothing


'정상적으로 완료되었으면 성공했다는 대답을 보내자.
Response.Write "<?xml version=""1.0"" encoding=""iso-8859-1""?>"
Response.Write "<response>"
Response.Write "<error>0</error>"
Response.Write "<message>TrackBack Success.</message>"
Response.Write "</response>"
%>


첫번째로 트랙백은 규정적으로 4개의 변수값을 전송합니다. 글제목(title),글주소(url),글내용(exerpt),블로그명(blog_name) 입니다. 여기서 필수요소는 url 입니다. 위 소스에서는 블로그명을 포함시키지 않았습니다. 그리고 글번호는 해당 글의 존재유무를 확인하기 위해 트랙백 주소에서 GET 형태로 받아옵니다.


두번째로 인코딩되는 xml 중 <error> 부분이 가장 중요합니다. 즉, error 값으로 트랙백 핑을 보낸쪽에다 대답을 하는 것입니다.0이면 성공이고 1이면 실패입니다. 그리고 <message>부분은 말그대로 추가설명입니다. 그리고 트랙백 핑은 POST 형태로 값을 받습니다. 받아오는 변수들을 Request.Form 형태로 정의해주는것이 더 좋을듯 하네요.

세번째로 위 소스에서는 간단한 xml 이라 굳이 Msxml2.DOMDocument 같은 xml 관련 서버 컴포넌트를 사용하지 않았습니다.


2. 트랙백 핑 보내기


<%
b_tb = "핑을 보낼 블로그 게시물의 트랙백 주소"

if b_tb <> "" then '만약 트랙백 주소가 입력되었다면 ..


 ' 여기서 부터 트랙백 처리
 
 ' 핑을 보낼 준비하자
 x_Posturl = Server.URLEncode(나의 글의 고유주소)
 x_BlogName = Server.URLEncode(나의 블로그명)
 x_Title = Server.URLEncode(나의 글의 제목)
 x_Excerpt = Server.URLEncode(나의 글의 내용)

 Str_tb="title="&x_Title&"&url="&x_Posturl&"&excerpt="&x_Excerpt&"&blog_name="&x_BlogName


 ' 트랙백 핑을 보내자
 set xml = server.CreateObject("msxml2.xmlhttp")
 xml.open "POST", "" & b_tb & "", false
 
 ' 몇가지 헤더처리
 xml.setRequestHeader "Accept-Language","ko"
 xml.setRequestHeader "Accept-Encoding","gzip, deflate"
 xml.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
 xml.setRequestHeader "Connection","Keep-Alive"
 xml.setRequestHeader "Cache-Control","no-cache"
 xml.send (Str_tb)
 
 ' 트랙백 핑 성공여부
 If InStr(1, xml.responseText, "<error>0</error>") Then
  ' 성공일경우 처리
 Else
  ' 실패일경우 처리
 End If
 
 Set xml = Nothing

end if
%>


일반적으로 글의 저장 또는 편집시 사용하실수 있습니다. 그리고 Str_tb 변수 정의 하면서 POST 로 넘기는 변수명은 변경하시면 안됩니다. 또한 위 소스에서는 msxml2.xmlhttp 컴포넌트를 이용하여 POST 형태로 핑을 전송합니다. 트랙백 핑의 성공여부는 받아온 xml 을 디코딩 하셔도 되지만 그냥 <error>부분만 체크하기 위해 instr 로 처리하였습니다. 추가적으로 <message> 부분도 체크하여 성공 또는 실패시의 메시지를 받아오실수도 있습니다. 간혹 핑 전송시 한글이 깨어진다는 질문이 있는데, 이 경우 UrlEncoding 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.



출처: http://nbloger.com/blog/xbb.asp?blogid=iendev&action=view&b_idx=205

2008/02/21 15:25 2008/02/21 15:25

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다