Trackback

In Weblogs ist dieses Feature seit einiger Zeit ein Muss, und immer mehr Weblog-Systeme unterstützen es.

Was es ist, wie es funktioniert und wie man es einbauen kann, wird man in den folgenden Abschnitten erfahren.

  1. Was ist Trackback?
  2. Wie funktioniert Trackback?
  3. Wie kann man Trackback realisieren?
  4. Weiterführende Links

Was ist Trackback?

Am einfachsten lässt sich das Prinzip mit einem Beispiel erklären. Man liest in einem anderen Blog einen interessanten Eintrag. Die Thematik möchte man seinen eigenen Lesern nicht vorenthalten. Zudem möchte man sich auf den gelesenen Beitrag beziehen und seine eigene Meinung niederschreiben.

Bei unblogbar habe ich mir angesehen, wie man in sein eigenes Blog diese Technik implementieren kann. Als ich dies versuchte, traten bei meiner Software verschiedene Probleme auf, dessen Lösung ich euch nicht vorenthalten möchte. [...]

Wie funktioniert Trackback?

In den meisten Fällen wird das Blog, auf das man sich bezieht, verlinkt. Nutzt man die Trackback-Funktion, sendet das eigene Blog einen sogenannten (Trackback-)Ping in der Form eines HTTP POST Requests an eine bestimmte URL des Ziel-Blogs. In dem anderen Blog werden diese Daten, sofern alles problemlos verläuft, gespeichert (z.B. in einer Datenbank) und anschlieüend in der Einzelansicht des jeweiligen Eintrags mit Verlinkung zum bezugnehmenden Blog angezeigt.

User können sich also durch verschiedene Blogs und Kommentare in diesen ein besseres Bild von der Thematik verschaffen.

Wie kann man Trackback realisieren?

Trackbacks versenden

Trackback wurde von Movable Type entwickelt, es wurde standardisiert, welche Daten gesendet werden und wie es abläuft. Der HTTP POST Request, den man an die Trackback-URL des Eintrags sendet, muss folgendes enthalten:

$fp = @fsockopen($host, 80);
@fputs($fp, "POST ".$trackback_url." HTTP/1.1\r\n");
@fputs($fp, "Host: ".$host."\r\n");
@fputs($fp, "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n");
@fputs($fp, "Content-length: ".strlen($data)."\r\n");
@fputs($fp, "Connection: close\r\n\r\n");
@fputs($fp, $data);
@fclose($fp);
title=Mein+Eintrag
&url=http%3A%2F%2Funblogbar.com%2Fweblog%2C123.html
&excerpt=Ein+kleiner+Auszug%2C+...&blog_name=unblogbar.com

Jedes Element muss einzeln mit urlencode() kodiert werden:

title=".urlencode($title)."&url=" ...)

Trackbacks empfangen

Die Trackback-Seite ($trackback_url) empfängt den gesendeten HTTP POST Request, die gesendeten Daten können dann über $_POST['blog_name'], $_POST['url'], $_POST['excerpt'] und $_POST['title'] verarbeitet werden, meistens werden sie in eine Datenbank eingetragen um sie beispielsweise unter dem Blog-Eintrag aufführen zu können.

War das Empfangen erfolreich, wird folgendes als XML-Dokument ausgegeben:

<?xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
</response>

Im Fehlerfall folgendes:

<?xml version="1.0" encoding="utf-8"?>
<response>
<error>1</error>
<message>The error message</message>
</response>

Ein XML-Dokument kennzeichnet man in PHP durch die folgende HEADER-Angabe:

header("Content-type: text/xml");

Autodiscovery (automatisches erkennen der URL)

Möchte man einen Trackback versenden, benötigt man die Trackback-URL eines Weblog-Eintrags. Damit das pingende Blog (das eigene) diese URL findet, sollte man ein RDF mit Informationen zum Eintrag auf der Einzelansichts-Seite einbinden.

Dabei sollte man beachten, dass der Code selbst in XHTML nicht gültig ist. Damit das Dokument dennoch als gültig anerkannt wird, kann man den Code in einen Kommentar schreiben.

<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />
</rdf:RDF>
-->

Alle URLs müssen dynamisch angepasst werden, ebenso wie der Titel.

Eine detailierte Beschreibung zur Realisierung in ASP findet man bei zerbit.de.

Weiterführende Links