티스토리 뷰

WEB TIP/ASP

블로그 트랙백의 구현

제프 2007. 12. 4. 16:43

이글은 트랙백의 기본개념보다는 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 ("글번호 필드명") = bidx
.fields ("주소 필드명") = strURL
.fields ("제목 필드명") = strTitle
.fields ("내용 필드명") = 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 이라 굳이 xmlhttp 같은 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 로 넘기는 변수명은 변경하시면 안됩니다. 또한 위 소스에서는 xmlhttp 컴포넌트를 이용하여 POST 형태로 핑을 전송합니다. 트랙백 핑의 성공여부는 받아온 xml 을 디코딩 하셔도 되지만 그냥 <error>부분만 체크하기 위해 instr 로 처리하였습니다. 추가적으로 <message> 부분도 체크하여 성공 또는 실패시의 메시지를 받아오실수도 있습니다. 간혹 핑 전송시 한글이 깨어진다는 질문이 있는데, 이 경우 UrlEncoding 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.


출처 : 송준우 ( http://iendev.com http://iendev.nbloger.com )

'WEB TIP > ASP' 카테고리의 다른 글

쿠폰번호 생성(랜덤번호)  (0) 2008.06.17
adVarChar 크기  (0) 2008.02.19
블로그 XML RSS 리더의 구현  (0) 2007.12.04
블로그 XML RSS구현  (0) 2007.12.04
Static SQL  (0) 2007.12.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함