그림을 보면 알 수 있지만 GET으로 트랙백 URL을 요청하면 세션 코드가 붙은 URL을 반환한다. 그리고 이 URL로 다시 요청을 한 뒤 트랙백을 보내면 트랙백이 정상적으로 간다. 원래는 이 기능을 구현한 프로그램을 따로 작성한 뒤 이 프로그램을 이용해서 세션 코드가 붙은 URL을 요청한 뒤 텍스트큐브로 트랙백을 보냈었다. 그러나 이 방법은 일반인들이 적용하기 힘들며, 두번 작업을 해야 하기 때문에 아예 텍스트큐브를 패치했다. 절차는 다음과 같다.
- 좋아하는 편집기(예: EditPlus )로 library/model/blog.trackback.php 파일을 연다.
- 이 파일의 끝 부분에 다음 내용을 추가한다.
function trackbackTistory ($query, $host, $port=80, $timeout=10) { $socket = fsockopen($host, $port, $errno, $errstr, 10); fwrite($socket, "$query\r\n"); $res=fread($socket, 10240); fclose($socket); return $res; } - sendTrackback 함수에서 if ($isNeedConvert) {...} else {...}문을 찾은 뒤 else문의 $isSuccess = $request->send($content); 다음 행에 아래의 내용을 추가한다.
if(!$isSucess) { //url로 호스트와 포트, 경로를 판정 $request = @<a href="https://twitter.com/parse_url" target="_blank">parse_url</a>($url); $tistory_host=$request['host']; $tistory_port=$request['port']; $tistory_path=$request['path']; // 트랙백 URL을 요청 $query="GET ".$tistory_path." HTTP/1.1\r\nHost: ".$tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); // 세션 코드가 붙은 URL을 찾아 이 URL로 다시 요청 if(preg_match("/Location: ([^\r\n]*)\r\n/is", $res, $match)) { $query="GET ".$match[1]." HTTP/1.1\r\nHost: ".$tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); } // 트랙백을 다시 보냄 $request = new HTTPRequest('POST', $url); $request->contentType = 'application/x-www-form-urlencoded; charset=utf-8'; $request->referer = $link; $isSuccess = $request->send($content); }
내용을 보면 알 수 있지만 $isSucess가 false면 요청한 URL로 세션 코드가 붙은 URL을 가져온다. 그리고이 URL을 다시 요청한 뒤 트랙백을 보내도록 한 것이다. 실제 이 코드를 삽입한 뒤 티스토리주1에도 트랙백이 정상적으로 가는 것을 확인했다. 줄 번호를 입력하는 것이 더 도움이 되겠지만 현재 내가 사용하고 있는 텍스트큐브는 1.7.7 베타2이고 중간에 수정한 부분이 있기 때문에 줄 번호는 생략했다.
Trackback
Trackback Address :: http://offree.net/trackback/2270
-
Subject : 티스토리 fsockopen() 문제 간단하게 해결하기
Tracked from HEURISTING.NET 2009/02/01 04:43 del.어쩐지 요 근래 들어서 티스토리 쪽 글이 수집이 안된다 했는데, 도아님의 글을 보고 원인을 알았습니다. 도아님 글에는 티스토리에서 fsockopen() 함수가 왜 동작하지 않는지 원리와 텍스트큐브
Comments
-
-
-
민노씨 2009/01/30 19:07
리베님께서 알려주셔서 냉큼( ^ ^; ) 달려왔습니다.
제 경우에는 티스토리에서 저에게 보내오는 트랙백을 계속해서 튕겨내고 있는데요(최근에는 제가 보내는 것도 잘 안되고 말이죠).
도아님께서 알려주신 방법을 한번 시도해봐야겠네요.
고맙습니다. : ) -
-
-
-
-
-
-
-
-
하민혁 2009/01/31 09:38
텍스트큐브 1.7.7 베타2로 갈아탄 이후 특정 서비스로의 트랙백이 안 되더니 도아님이 한 방에 해결을 해주셨네요 패치 후 확인해보니 모든 서비스로의 트랙백이 원활하게 작동하고 있습니다 고맙습니다
도아님 글을 TNF 포럼 게시판의 문답게시판에 링크로 겁니다
http://forum.tattersite.com/ko/viewtopic.php?id=7657 -
-
-
휴리스틱 2009/02/01 13:29
저도 며칠 전부터 티스토리로 트랙백이 안가더라고요. 트랙백 뿐만이 아니라 웹에서 티스토리로 가는 소켓 자체가 열리지가 않았습니다. 그래서 티스토리에서 제 웹서버를 스팸으로 오인하고 차단했나 했었는데, 도아님 글을 보고 문제를 해결할 수 있었습니다. 감사합니다.
-
-
하민혁 2009/02/16 20:58
위에서 다른 분도 문제점을 제기해주셨는데요.
이글루스 뿐만 아니라 네이버 블로그, 파란블로그를 비롯하여 일부 설치형 블로그에도 몽땅 2개씩 날아갑니다. 새로운 패치 기다리다가 눈 빠질 지경입니다. 패치 언능 좀 해주세요. -_- -
하민혁 2009/02/17 14:11
네. 그렇군요.
근데, 패치는 언제 나오나요? 인간 아닌 블로거를 위한 패치라도 패치는 좀 해주세요.
<덧> 즐겨 하는 트랙백을 못 보내고 있습니다. -_-






Facebook