PHP

소걸음 2009. 7. 24. 13:33

머리말: 이 게시물은 퍼가셔도 됩니다. 하지만 머리말과 작성자는 꼭 명시해주셨으면 합니다.
===================================================================================

트랙백 구현하기 - 2. 트랙백의 형식

앞에서 트랙백은 트랙백 핑이라는 형태로 전달된다고 했습니다. 그렇다면 이 트랙백 핑과 답변의 형식을 알아야 내용을 전송할 수 있을텐데요, 이것은 정형화된 구조이므로 프로토콜이라고 할 수 있습니다.

먼저 트랙백 핑을 보내는 방법입니다. 트랙백 핑은 상대 서버로 4가지 POST변수를 넘겨주는 형태로 처리됩니다. 이 4가지 변수는 url,blog_name,title,excerpt 인데요, 이름에서 짐작하실 수 있듯이 새로 작성되는 글의 URL, 블로그의 이름, 글 제목, 글 내용을 담고 있는 변수들입니다.

우선 핑을 보내기 전에 트랙백 주소가 실제로 존재하는지를 점검하기 위해 fopen등의 함수로 해당 주소를 일단 열어보는 등의 과정을 거치게 됩니다. 이후 실제 핑을 보낼 때에는 상대 서버에 접근해서 데이터를 넘겨줘야 하므로 fsockopen등의 네트워크 함수나 소켓 함수를 사용합니다.

핑을 받은 서버에서는 내용을 정리하고 답변을 줘야 할 텐데요, 물론 url,blog_name,title,excerpt의 POST변수를 받아 일련의 과정을 처리하게 됩니다. 일단 넘어온 해당 변수의 이상유무와 원본 게시물의 존재여부 등을 검사한 후 답변을 해 주어야 합니다.

답변은 XML을 출력하는 형태로 이루어지는데요, 에러가 없을 때에는

<?xml version="1.0" encoding="euc-kr(혹은 iso-8859-1)"?>
<response>
    <error>0</error>
</response>

의 내용을, 에러가 있을 시에는

<?xml version="1.0" encoding="euc-kr(혹은 iso-8859-1)"?>
<response>
    <error>1</error>
    <message>에러의 내용</message>
</response>

를 출력해줍니다. 물론 에러가 없을 때에만 DB에 내용을 저장해야겠죠.

그럼 다시 핑을 보내는 서버로 돌아오면, 해당 프로그램이 저 출력 내용을 다시 가져와서 해석하게 됩니다. 만약 에러가 없다면 문제 없이 글 등록을 완료시키면 될 것이고, 있다면 에러의 내용을 작성자에게 출력해 줍니다.


그림 1: 트랙백 프로토콜 정리


이 과정을 총정리한 것이 위 그림입니다. 정리하자면, url,blog_name,title,excerpt의 네 변수를 POST로 보내면 XML로 성공/오류 여부의 답변이 반환되는 것이라 할 수 있습니다.


다음편에서는 본격적으로 프로그래밍의 범주로 들어가, PHP로 트랙백 핑을 보내는 방법에 대해 설명하겠습니다.