Ein kleines Update zu diesem reichlichen alten Thread, aber thematisch passt es hier gut rein.
Wie ich leider erst jetzt bemerkt habe ist es nicht ohne weiteres möglich bei einer IFrame-Lösung den Html-Source der Klickseite zu parsen, und so diverse Informationen aus zu lesen. Wie ich durch eine google-Suche erfahren habe gibt es zwar Möglichkeiten die aber nahe am illegalen sind.
Hierfür möchte ich mich bei allen entschuldigen.
Wir haben sofort reagiert und eine neue serverseitige Schnittstelle geschaffen, mit der ihr ab jetzt arbeiten könnt, um diesen Nachteil aus zu gleichen.
Nachfolgend nun die technische Schnittstellen Beschreibung:
Anmerkung: Die nachstehende Beschreibung ist für Leute gedacht die bereits Erfahrung mit JavaScript und Html haben, und ist KEINE Copy & Paste Lösung. Sie soll als Ersatz für diejenigen dienen die bisher eine IFrame-Lösung benutzten und diese nun verbessern wollen. Natürlich funktioniert eine einfache IFrame-Lösung wie bisher auch.
In der nachfolgenden Lösung müsst ihr JavaScript-Dateien von unserem Server aus einbinden. Wenn ihr dies tut seit ihr zu gleich mit folgenden Nutzungsbestimmungen einverstanden:
Code:
* Der Carddex JavaScript Core ist teil der Carddex.System-Technology V.4.2 *
* wurden von Siria und Iruini erstellt und sind deren geistiges Eigentum. *
* Es gilt der Carddex.net Disclaimer und die PTC-Nutzungsbedingungen *
* http://www.carddex.net/index.php?page=DISCLAIMER *
* http://www.carddex-ptc.de/Portal.php?page=PORTAL_NUTZUNGSBEDINGUNGEN *
* *
* Die vorgenannten Eigentümer gewähren folgendes Nutzungsrecht: *
* 1. Das Nutzungsrecht gilt nur für diese Dateien mit Namen: *
* CARDDEX_KlickPage_Header.js *
* PokePageInterface.php *
* 2. Das Nutzungsrecht erlaubt das einbinden dieser Datei auf der eigenen *
* Homepage zur ausschließlichen Benutzung einer Carddex-PTC-Klickseite *
* 3. Das Nutzungsrecht erlaubt NICHT das Verändern, Kopieren (ganz oder *
* teilweise), die Weitergabe oder den sonstigen Gebrauch dieser Dateien *
* (mit Ausnahme der unter Punkt 2 erlaubten Nutzung) *
* 4. Das Nutzungsrecht kann jederzeit wiederrufen werden. *
Nun zur Nutzung der Schnittstelle:
als erstes müsst ihr folgende JavaScript-Datei auf eurer Seite laden (am besten im Head-Bereich):
Code:
<script src="http://www.carddex-ptc.de/CARDDEX_KlickPage_Header.js" type="text/javascript" charset="UTF-8"></script>
Der JavaScript-Code in dieser Datei stellt die Schnittstelle zum auswerten der Klickdaten bereit.
Um nun Klicks aus zu führen, benötigt ihr einen Bereich in dem ihr zusätzliche JavaScript-Dateien zur Laufzeit nachladen könnt.
Code:
<div id='CarddexSchnittstelle' style='display:none'>
</div>
Bevor nun der Code zum eigentlichen Klicken ausgeführt wird, müsst ihr
einmalig die Schnittstelle initialisieren. Dies erfolgt durch folgendes JS-Statement:
Code:
GLOBAL_C_JS_PAS_KLICKPAGE_OBJECT.Initialize(Anzeige);
Das Wort "Anzeige" ist eine Funktionsreferenz auf die, unten noch näher erläuterte, Funktion, die die Anzeige der Klick-Informationen durchführt.
Sie dient als Callback-Funktion und wird nach einem Klick aufgerufen.
Ihr könnt hier natürlich eure eigene Anzeige-Funktion verwenden und auch deren Namen übergeben. Wichtig ist das eure Anzeige-Funktion genau einen Parameter hat, und zwar die UserID.
Nun müssen wir einen Klick ausführen. Um euch dies besser zeigen zu können hab ich eine Funktion DoKlick als Beispiel geschrieben:
Code:
function DoKlick(UserID, TeamPlatzNr)
{
var JetztZeitpunkt = new Date();
var NewKlick = document.createElement("script");
NewKlick.type = "text/javascript";
NewKlick.src = "http://www.carddex-ptc.de/PokePageInterface.php?id=" + UserID + "&tp=" + TeamPlatzNr + "&TimeKey=" + JetztZeitpunkt.getTime();
NewKlick.charset = "ISO-8859-1";
document.getElementById("CarddexSchnittstelle").appendChild(NewKlick);
}
Wie ihr seht wird als "Klickpage" nicht "PokePage.php" benutzt (wie bei der IFrame-Lösung) sondern "PokePageInterface.php". Diese Datei führt den Klick aus, und gibt JavaScript zurück.
Der ÜbergabeParameter TimeKey an PokePageInterface ist nötig damit die Datei nicht aus dem Cache geladen wird.
Wie schon erwähnt nun die Funktion Anzeige, die als Callback automatisch aufgerufen wird wenn der Klick abgeschlossen ist. Auch sie dient nur als Beispiel um euch das System zu zeigen.
Code:
function Anzeige (UID)
{
var KlickObjekt = GLOBAL_C_JS_PAS_KLICKPAGE_OBJECT.GetKlickUser(UID);
if (KlickObjekt == null)
{
alert ("Fehler ein KlickObjekt mit der UserID " + UID + " wurde nicht gefunden");
return;
}
switch (KlickObjekt.GetResultType())
{
case "ERROR":
Output.innerHTML += "<br><br>UserID: " + UID;
Output.innerHTML += "<br>Fehler! Grund: " + KlickObjekt.GetResultMessage();
break;
case "DONE_NO":
Output.innerHTML += "<br><br>UserID: " + UID;
Output.innerHTML += "<br>UserName: " + KlickObjekt.GetUserName();
Output.innerHTML += "<br>Es konnten keine XP gegeben werden. Grund: " + KlickObjekt.GetResultMessage();
Output.innerHTML += "<br>Sprite eines leeren Teamplatzes: <img src='" + KlickObjekt.GetPokemonSpriteURL() + "'>";
break;
case "DONE":
Output.innerHTML += "<br><br>UserID: " + UID;
Output.innerHTML += "<br>UserName: " + KlickObjekt.GetUserName();
Output.innerHTML += "<br>Spitzname des Pokemon: " + KlickObjekt.GetPokemonSpitzname();
Output.innerHTML += "<br>Sprite des Pokemon: <img src='" + KlickObjekt.GetPokemonSpriteURL() + "'>";
Output.innerHTML += "<br>Level des Pokemon: " + KlickObjekt.GetPokemonLevel();
Output.innerHTML += "<br>Gesamt XP des Pokemon: " + KlickObjekt.GetPokemonXP();
Output.innerHTML += "<br>XP gewinn durch diesen Klick: " + KlickObjekt.GetPokemonXPPlus();
Output.innerHTML += "<br>Verbleibende XP bis zum Level up: " + KlickObjekt.GetPokemonLevelUpInXP();
Output.innerHTML += "<br>aktueller Müdigkeitswert: " + KlickObjekt.GetPokemonMuedigkeit();
Output.innerHTML += "<br>Maximaler Müdigkeitswert: " + KlickObjekt.GetPokemonMaximaleMuedigkeit();
Output.innerHTML += "<br>Sound URL: " + KlickObjekt.GetPokemonRufSoundURL();
break;
default:
alert("Ein unerwarteter Fehler");
}
}
Zunächst wird mit hilfe der übergebenen User-ID das Klick-Objekt geladen. Mithilfe verschiedener Get-Funktionen können nun die Daten des Klicks abgerufen werden.
Ihr solltet dabei immer zunächst mit GetResultType() prüfen ob der Klick erfolgreich war oder ob es Probleme gab. Jenachdem sind nämlich (wie man sieht) nicht immer alle Informationen abrufbar. Informationen die im jeweiligen Typ nicht benötigt werden, werden null als Rückgabe liefern wenn man sie per Get abruft.
Der Typ "ERROR" wird verwendet wenn u.a. Die UserID nicht existiert, wenn die UserID keinem User zugeordnet ist, der User mit dieser ID gesperrt ist, usw.
Der Typ "DONE_NO" wird verwendet wenn der Teamplatz leer ist
Der Typ "DONE" wird verwendet wenn das Pokemon geklickt wurde (auch wenn es keine XP erhält weil es diese Stunde schonmal geklickt wurde)
Ich hoffe ich konnte verständlich erklären, wie das neue System arbeitet. Falls ihr Fragen habt dürft ihr mich gern per PN anschreiben, allerdings behalte ich mir vor nicht zu antworten, und zwar dann wenn ich der Meinung bin das es darauf hinausläuft, dass ihr eine Copy & Paste-Lösung wollt oder ich der Meinung bin, dass ihr nicht genug JavaScript-Grundkenntnisse mitbringt.