- SiteLink #1 : http://nbloger.com/view_post/vw.asp?bidx=205

필요하신분들이 많으실듯해서 올려드립니다.

사실 크게 어려운 부분은 아닙니다.

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



1. 트랙백 핑 받기

[CODE] <% '변수 처리 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>" %> [/CODE]



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

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

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



2. 트랙백 핑 보내기


[CODE] <% 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="&amp;amp;amp;amp;amp;amp;x_Title&amp;amp;amp;amp;amp;amp;" &amp;amp;amp;amp;amp;amp;url="&amp;amp;amp;amp;amp;amp;x_Posturl &amp;amp;amp;amp;amp;amp;"&amp;amp;amp;amp;amp;amp;excerpt=" &amp;amp;amp;amp;amp;amp;x_Excerpt&amp;amp;amp;amp;amp;amp;" &amp;amp;amp;amp;amp;amp;blog_name="&amp;amp;amp;amp;amp;amp ;x_BlogName ' 트랙백 핑을 보내자 set xml = server.CreateObject("msxml2.xmlhttp") xml.open "POST", "" &amp;amp;amp;amp;amp;amp; b_tb &amp;amp;amp;amp;amp;amp; "", 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 %> [/CODE]



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

+ Recent posts