Como fazer um trackback em PHP
Agora que sabemos o que é um trackback e como ele funciona, vamos fazer uma função capaz de mandar um trackback para cada referencia em nosso blog.
Nessa função mandaremos todos os dados necessários em um array, e a url completa do trackback que queremos.
Agora que temos a nossa função, vamos montar a chamada pra essa função.
Alguns blogs não retornam informação, então não fique chateado se não funcionar, entre no blog que você fez a requisição e verifique os coments, pois muitos blogs utilizam o trackback nos coments.
Nessa função mandaremos todos os dados necessários em um array, e a url completa do trackback que queremos.
<?php function track_it($datastream, $url) { //Retiramo o 'http://', não é necessario ele $url = preg_replace("@^http://@i", "", $url); //Pegamos o host que iremos chamar $host = substr($url, 0, strpos($url, "/")); //O caminho em que devemos fazer o trackback $uri = strstr($url, "/"); $reqbody = ""; //Arrumamos os dados //title=Mein+Site&url=www.foobar.com.br/blog/352&... foreach($datastream as $key=>$val) { if (!empty($reqbody)) $reqbody.= "&"; $reqbody.= $key."=".$val; } $contentlength = strlen($reqbody); //Montamos o corpo da requisição $reqheader = "POST $uri HTTP/1.1\r\n". "Host: $host\n". "User-Agent: PostIt\r\n". "Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: $contentlength\r\n\r\n". "$reqbody\r\n"; //Abrimos a conexão $socket = fsockopen($host, 80, $errno, $errstr); //Caso ocorra algum erro, colocaremos esse erro em um array $result if (!$socket) { $result["errno"] = $errno; $result["errstr"] = $errstr; return $result; } //Faremos a nossa requisição fputs($socket, $reqheader); //E pegamos o resultado e alocaremos em um array while (!feof($socket)) { $result[] = fgets($socket, 4096); } fclose($socket); //Vamos retornar todo o resultado return $result; } ?>
Agora que temos a nossa função, vamos montar a chamada pra essa função.
<?php //Array com os dados a serem enviados para o Trackback $datastream = array( 'title'=>'Como fazer um trackback', 'url'=>'http://www.foobar.com.br/blog/?id=52', 'excerpt'=>'Alguma descrição', 'blog_name'=>'Mein Site' ); //URL do TrackBack, completa, a função irá separar $url = 'http://www.foo.com/trackback/?id=521'; $track = track_it($datastream, $url); //Com o print_r iremos ver todo o array e suas informações print_r($track); ?>
Alguns blogs não retornam informação, então não fique chateado se não funcionar, entre no blog que você fez a requisição e verifique os coments, pois muitos blogs utilizam o trackback nos coments.