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.