트랙백 구현하기 - 3. PHP로 트랙백 핑 보내기(上) 정보
PHP 트랙백 구현하기 - 3. PHP로 트랙백 핑 보내기(上)
관련링크
첨부파일
본문
트랙백 구현하기 - 3. PHP로 트랙백 핑 보내기(上)
Download #1에 풀소스가 첨부되어 있습니다.
이제 본격적인 프로그래밍의 영역으로 넘어가 PHP로 직접 핑을 보내고 답변을 가져오는 소스를 짜보도록 하겠습니다. 우선 프로그램을 작성하기에 앞서 개념을 정리해보도록 하죠.
1. 트랙백 주소가 유효한지 검사해서 존재하지 않을 경우 취소시킨다
2. 보낼 트랙백 핑 데이터를 정리한다.
3. 서버에 접속한 후 트랙백 핑을 보내고 응답을 받는다.
4. 올바른 XML 답변이 오지 않을 경우 트랙백 주소가 아닌 것으로 간주하고 취소시킨다.
5. XML 답변을 분석해 오류가 발생한 경우 취소시킨다.
6. 위 과정을 모두 통과했을 경우 완료시킨다.
위 내용을 염두하고 우선 풀소스를 보도록 합시다.
그림이 찌그러져 보일 경우에는 클릭해서 새창으로 띄워 보세요.
보시다시피 우리는 이번 소스를 함수화해서 만들 것입니다. 따라서 위 과정보다 앞서 어떤 변수를 받아야 하는가에 대해 생각해 보아야 합니다. 핑을 보낼 때 필요한 url,title,blog_name,excerpt 변수 외에 트랙백 주소 URL을 나타내는 변수도 받아야 합니다. "트랙백 주소 URL을 나타내는 변수"를 $t_url이라고 두겠습니다. 정리하면, $t_url,$url,$title,$blog_name,$excerpt의 5개 변수를 기입받아야 합니다.
function send_tb($t_url,$url,$title,$blog_name,$excerpt) {
에러 문자열을 $tb_error_str에 담아 사용하도록 하겠습니다. 이를 위해 전역변수 선언을 해줍니다.
global $tb_error_str;
그 다음 첫째 단계인 주소 유효성 검사입니다. fopen으로 해당 URL을 열어서 파일포인터가 없으면 해당 주소가 존재하지 않는 것으로 간주하겠습니다.
$p_fp = @fopen($t_url,'r');
if($p_fp) fclose($p_fp);
else {
$tb_error_str = "트랙백 URL이 존재하지 않습니다.";
return false;
}
본문 내용을 정리해야 합니다. 우선 제목과 본문 요약의 태그를 제거하여야 합니다. 핑을 보낼 때에는 rawurlencode()를 사용해 인코딩시킵니다. 이는 "믹스"를 "%B9%CD%BD%BA"따위로 고쳐주는 것으로, 검색엔진에서 한글 검색시 주소창에 보이는 그것입니다. 단 urlencode()와는 다르게 공백을 +로 표시하지 않고 공백 역시 인코딩합니다(urlencode() 를 사용해도 무방한 것으로 알려져 있습니다).
이렇게 정리한 내용을 $t_data에 넣습니다. $t_data는 HTTP 변수 전송 형식을 따라, 변수=값&변수=값의 형태로 만듭니다.
$title = strip_tags($title);
$excerpt = strip_tags($excerpt);
$t_data = "url=".rawurlencode($url)."&title=".rawurlencode($title).
"&blog_name=".rawurlencode($blog_name)."&excerpt=".rawurlencode($excerpt);
소켓 연결을 위해 트랙백 대상 주소를 정리합니다. 만약 트랙백 주소 자체에 "변수=값"형태의 쿼리가 있다면 이를 $t_data 뒤에 붙여넣습니다. 또한 포트 정보가 없는 경우 웹서버 기본포트인 80을 입력해줍니다.
$uinfo = parse_url($t_url);
if($uinfo[query]) $t_data .= "&".$uinfo[query];
if(!$uinfo[port]) $uinfo[port] = "80";
이제 보낼 내용을 정리해야 합니다. 글이 길어졌으니 이것부터는 하편에서 이어서 쓰겠습니다.
0
댓글 전체