필요하신분들이 많으실듯해서 올려드립니다.
사실 크게 어려운 부분은 아닙니다.
아래글은 트랙백의 기본개념보다는 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 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.
사실 크게 어려운 부분은 아닙니다.
아래글은 트랙백의 기본개념보다는 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 을 시키지 않으셨을때가 가장많습니다. 그외에는 위와 같은 방법으로 무난하게 성공하실것 입니다.
'asp' 카테고리의 다른 글
허용 문자열 지정 (1) | 2007.05.03 |
---|---|
HTML막기 (0) | 2007.05.03 |
isNull, isEmpty, isObject... (0) | 2007.05.03 |
여러가지 ASP 관련 함수 모음 (0) | 2007.05.03 |
포스트, 겟, 쿠키 , 세션 값확인할때 (0) | 2007.05.03 |