Seite 1 von 1

XML-API

BeitragVerfasst: 28. Apr 2012, 00:21
von Gast
Hallo,

da immer wieder Fragen zur XML-API aufkommen, wollte ich hier einfach mal die Erklärung posten:

Die XML-API ist eine Schnittstelle welche es ermöglicht, dynamische User-Banner wie diesen hier zu erstellen:

Bild

Dazu benötigt man jedoch zumindest einen Webspace und den entsprechenden Quellcode. Ich habe mir mal die Mühe gemacht, und einen möglichst einfachen Quellcode geschrieben, der recht leicht verständlich ist. Wenn ihr einen Webspace oder einen Root-Server besitzt, könnt ihr den Code nach euren Wünschen anpassen und auf den Webspace/Root-Server hochladen.

Code: Alles auswählen
<?php

/* 
   PHP-Script für dynamische User-Banner mittels der WHO XML-API
   Die URL zur API findet ihr in WhO unter "Optionen" => "XML-API"
   Bei Fragen wendet euch bitte an hacker07
*/

// Url zur xml-api
// http://[server].world-hack.org/api.who?[xml_key]
$xml_api = "http://s1.world-hack.org/api.who?4d820b9d0f331";

// XML Datei einlesen
$data = simplexml_load_string( file_get_contents( $xml_api ) );

if($data === false)
{
die("Keine Daten Gefunden oder XML error!");
}

// Die einzelnen abrufbaren Parameter
// Unnötige Parameter mit "#" deaktivieren

// Für den Spieler
$user = array(
"Spieler: ",    $data->name[0],
"Punkte: ",    number_format( ( int ) $data->punkte[0], 0, ',', '.' ), // Tausendertrennpunkt hinzufügen
"Platz: ",       number_format( ( int ) $data->platz[0], 0, ',', '.' ), // Tausendertrennpunkt hinzufügen
"Rang: ",       $data->hackerrang[0],
#"Computer: ",   $data->pcs[0]
);

// Für den Cluster
$cluster = array(
"Cluster: ",      $data->name[1]." [ ". $data->code[0] ." ]",
"Punkte: ",         number_format( ( int ) $data->points[0], 0, ',', '.' ), // Tausendertrennpunkt hinzufügen
"Platz: ",         $data->platz[1],
"Member: ",         $data->member[0],
#"PC/Member: ",      $data->av_pcs[0],
#"Erfolg: ",      $data->succes_rate[0]
);

// Bildbreite
$width = 468;
// Bildhöhe
$height = 60;

// Schriftgröße
$font_size = 3;

// Bild generieren
$img = imagecreate( $width, $height );

// Hintergrundfarbe in RGB (Rot Grün Blau)
$background = imagecolorallocate( $img, 25, 25, 25 );

// Schriftfarbe in RGB (Rot Grün Blau)
$color = imagecolorallocate( $img, 255, 255, 255 );

// Linienfarbe in RGB (Rot Grün Blau)
$line = imagecolorallocate( $img, 37, 75, 21 );

// WHO-Icon einlesen
$image = imagecreatefrompng ( 'who.png' );

// WHO-Icon einfuegen
imagecopyresized( $img, $image, 6, 0, 0, 0, 61, 60, 61, 60 );

// Textposition (Höhe)
$ypos = 3;

// Solange noch nicht angezeigte User-Daten vorhanden sind
for ( $i = 0; $i < count ( $user ) * 2; $i++ )
{
   // Die Beschriftung
   imagestring( $img, $font_size, 75, $ypos,  $user[$i], $color );
   $i++;
   // und die Daten einfügen
   imagestring( $img, $font_size, 140, $ypos,  $user[$i], $color );
   $ypos = $ypos + 12;
}

// Linie einfügen
imageline( $img , 219 , 3 , 219 , 57 , $line );
imageline( $img , 220 , 3 , 220 , 57 , $line );

// Textposition (Höhe)
$ypos = 3;

// Solange noch nicht angezeigte Cluster-Daten vorhanden sind
for ( $i = 0; $i < count ( $cluster ) * 2; $i++ )
{
   // Die Beschriftung
   imagestring( $img, $font_size, 225, $ypos, $cluster[$i], $color );
   $i++;
   // und die Daten einfügen
   imagestring( $img, $font_size, 290, $ypos, $cluster[$i], $color );
   $ypos = $ypos + 12;
}

// Bild generieren
header( "Content-Type: image/gif" );
imagegif( $img );

// Speicher freiräumen
imagedestroy( $img );
?>


Für diejenigen die keinen Webspace/Root-Server haben kann ich einen Standard-Banner anbieten.

Um diesen "Standard-Banner" mit euren Daten zu erhalten, fügt an den Link
http://testserver4-you.de/banner.php?api=
eure XML-API Adresse an.

Das sollte dann so aussehen:
http://testserver4-you.de/banner.php?ap ... 20b9d0f331

Fügt diesen Link dann einfach via BBCode wie ein normales Bild in WHO, oder wo auch immer ihr wollt ein.

Re: XML-API

BeitragVerfasst: 28. Apr 2012, 00:35
von ThaSpeedy
Saubere arbeit, schön auskommentiert :)


minimale Verbesserung!
Code: Alles auswählen
// http://[server].world-hack.org/api.who?[xml_key]
$xml_api = "http://s1.world-hack.org/api.who?4d820b9d0f331";

// XML Datei einlesen
$data = simplexml_load_string( file_get_contents( $xml_api ) );

// <------------ START
if($data === false)
{
die("Keine Daten Gefunden oder XML error!");
}
// <------------ ENDE

// Die einzelnen abrufbaren Parameter
// Unnötige Parameter mit "#" deaktivieren

// Für den Spieler
$user = array(

Re: XML-API

BeitragVerfasst: 28. Apr 2012, 00:40
von Gast
Danke dir, habs direkt bei mir umgeändert :)

Re: XML-API

BeitragVerfasst: 28. Apr 2012, 00:43
von ATZENPOWER
danke dir hacker für die mühe...

kleiner hinweis von meiner seite....
manche foren oder seiten usw erlauben keine phpseiten als domainlink...

abhilfe könnt ihr euch dann zb via tiny-url verschaffen.... einfach die url verschleiern und dann die verschleierte url verwenden...