PHP: Pingbacks empfangen 9. April 2009


Dieser Blogpost stammt ursprünglich von malteschwarzer.com – Orginaldatum: 06.09.2008

Hier ein kleine Anleitung für alle, die ihre Blog-CMS selbstprogrammieren und dort eine Pingback-Funktion einbauen möchten. Zu nächst sollte man sich die Definition von Pingbacks angucken:
http://www.hixie.ch/specs/pingback/pingback

Um überhaupt Pingbacks empfangen zu können muss man auf allen Seiten, bei denen dies möglich sein soll, auf das Script verweisen, welches die Pingbacks verarbeiten soll. Den Verweis kann man einmal in den HTTP-Header setzen oder als HTML einfügen.

HTTP-Header: header("X-Pingback: path/to/pingback.php");
HTML: <link rel="pingback" href="path/to/pingback.php" />

Sicherheitshalb sollte man beide Varianten benutzen.

Da Pingbacks über XML-RPC und nicht über POST oder GET laufen, muss man den XML-Request direkt über den PHP-Input empfangen:

$data = file_get_contents( 'php://input' );
$obj = new SimpleXMLElement( $data );

Eine Alternative wäre eine XML-RPC-Klasse (Anleitung)

Wenn man jetzt das XML-Request als Objekt gespeichert hat, kann man ganz leicht auf die Target- bzw. Source-URI zu greifen. Bevor man das tut sollte aber überprüfen ob es sich wirklich um ein Pingback handelt:

if( $query->methodName == 'pingback.ping' ) {
  $source = $obj->params->param[0]->value->string;
  $target = $obj->params->param[1]->value->string;
  /** Pingback verarbeiten:
  * - Backlink gesetzt?
  * - Pingback bereits vorhanden ... */
}

Danach sollte man auch einen Response senden (siehe Pingback-Definition).

Viel Erfolg bei euer Pingback-Funktion!

Dieser Blogpost stammt ursprünglich von malteschwarzer.com – Orginaldatum: 06.09.2008

Leave a Reply