이글은 트랙백의 기본개념보다는 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 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다