Trackbacks mit PHP senden

Trackbacks werden über POST Requests versendet. Mit PHP ist das nicht weiter schwierig, da es die nette Funktion fsockOpen() gibt. In einem Trackback werden vier Variabeln an den anderen Server gesendet. Zuerst den Titel ($title), die URL zum eigenen Artikel ($url), den Text auch Excerpt genannt ($excerpt) und schlussendlich noch den Namen des eigenen Blogs ($blog_name).
Bevor wir nun die Verbindung zum fremden Server herstellen, formen wir zuerst mal die Variabeln richtig. Für einen POST Request muss man den Hostnamen und den Pfad zur Trackback Seite haben. Diese Adresse Teilt man am besten mit der Funktion parse_url() auf. Das Codestücklein sieht dann so aus:
<?
// adresse parsen
$trackback_url=parse_url($trackback_url);

// host und pafd variabeln
$host=$trackback_url['host'];
$url=$trackback_url['path'];

// wenn eine query (?...) gesetzt ist.
if(isSet($trackback_url['query']))
{
    
$url.="?".$trackback_url['query'];
}
?>

Nun setzten wir die Variable $text. Darin werden die zu sendenden Daten gespeichert. Die Variabeln müssen noch mit urlEncode() behandelt werden.
<?
$text 
="title=".urlEnCode($title);
$text.="&amp;url=".urlEnCode($url);
$text.="&amp;excerpt=".urlEncode($excerpt);
$text.="&amp;blog_name=".urlEncode($blog_name);
?>

Nun sind die Variabeln vorbereitet und wir können den Request senden.
<?
// verbindung zum host auf port 80 herstellen
$fp=fSockOpen($host,80);

// POST request mit HTTP/1.1
fPuts($fp,"POST ".$url." HTTP/1.1\r\n");

// Nochmals den Hostnamen angeben
fPuts($fp,"Host: ".$host."\r\n");

// Content-Type
fPuts($fp,"Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n");

// Laenge des Requests. Laesst sich mit strLen() wunderbar berechnen.
fPuts($fp,"Content-length: ".strLen($text)."\r\n");

// Verbidung danach wieder schliessen
fPuts($fp,"Connection: close\r\n\r\n");

// Daten senden
fPuts($fp,$text);

// Vrebindung trennen
fclose($fp);
?>

Das wars auch schon. Das ganze ist relativ simpel, allerdings muss man aufpassen, dass man die Variabeln richtig zurechtbiegt, damit keine Fehler auftreten. Bald folgt noch ein Beitrag über Autodiscovery, aber damit muss ich mich selber zuerst beschäftigen.

Anmerkung:
Bei den gesendeten Daten sollte nicht &amp; sondern nur & stehen. Das ist ein Problem der Software. Ich werde sehen, ob ich das noch zurechtbiegen kann.

Kommentare

leu 03.04.07 09:48
Gravatar von leu Also das ist aber mal ein nützlicher Beitrag. Da könnt ich mal ein Stück code schreiben dass alle Links bei mir ausliest und überall einen Trackback hinschickt. (Oder was ich geil finden würde bei Kommentaren mit Links auch Trackbacks schickt)
david 03.04.07 10:08
Gravatar von david Hallo Leu
Mit Autodiscovery sollte das kein wirkliches Problem sein und die Links kriegt man mit pregt_match_all() auch relativ einfach raus. Ich habe momentan aber keinen Codeschnippsel zur hand.
Ich werde mal sehen, ob ich noch was passendes finde.
Trackback von: t-error.ch 03.04.07 13:45
Der Leu hatte hier mal wieder einen, nun ja, nennen wir es Geistesblitz. Man schreibt einen Beitrag oder Kommentar und das PHP Script sendet automatisch Trackbacks an die betroffenen URLs. Ein Teil davon hatte ich schon, nämlich das versenden der Trackbacks. Nun fehlen noch das auslesen der Links aus dem Beitrag oder Kommentar und das schon angetönte Autodiscovery. Das Autodiscovery muss sich noch etwas gedulden, denn das ist noch so simpel...
Mario 09.01.08 11:40
Gravatar von Mario Hallo,

ich will ja nicht nerven, aber kannst du mit dem Script eine Wordpress installation anpingen (also ein Blog das auf Wordpress läuft)? Oder gar den Pingdienst wordblog.de? Bei mir funktioniert beides nicht, allerdings kann ich ein Serndipity Blog erfolgreich anpingen und einen Trackback hinterlassen.

MfG

Mario
david 09.01.08 12:45
Gravatar von david Ahoi Mario

Das Senden von Trackbacks an ein WP-Blog hat bei mir wunderbar geklappt. Zwar musste man den Trackback im WP-Blog noch moderieren, aber er ist korrekt angekommen. Ich kann die bei mir laufende Version ab nochmals mit der oben gezeigten vergleichen. Vielleicht habe ich ja noch etwas angepasst.

Das "Anpingen" wie es wohl bei wordblog.de verwendet wird funktioniert etwas anders, da du dort ja nur mitteilst, dass du etwas neues geschrieben hast, aber nicht was. Es ist als eine andere Funktionsweise. Ich kann mein Ping-Script aber auch noch veröffentlichen, wenn Interesse besteht.
Mario 11.01.08 08:04
Gravatar von Mario Holla,

Das wäre ja mal eine super Idee, vielleicht hab ich ja irgendwo nen Fehler eingebaut den ich einfach nicht finde *grübel*. Also ich hätte interesse und freuen würde ich mich natürlich auch, will auch endlich wieder meine eigene Seite (ohne Wordpress) online stellen. Nur sollten (so hab ich mir das vorgenommen) dieses mal ein paar mehr Funktionen enthalten sein. Also ich bin gespannt und sag schon mal Danke für die Antwort.

MfG Mario

Kommentieren

Name:
Mail:
Homepage:
8+3=? (Spamschutz)