+2

Como fazer um trackback em PHP

criado por Rafael Zamana Kineippe em 06/11/2008 9:56am
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.

<?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.

Comentários:

Mostrando 1 - 2 de 2 comentários
Dam disse:
Bom artigo.
20/11/2008 4:21am (~16 anos atrás)

realmente muito esse post e muito util tb. valew chefe...
11/11/2008 4:35am (~16 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)