Hallo,
Das habe ich gestern etwa 6 Stunden von 20 bis 2 Uhr und heute wieder 2 Stunden. Also am selbst testen und versuchen fehlts ja bestimmt nicht.
OK, OK. Ich glaub Dir ja, dass Du Dir Muehe gibst.
include("http://www.flyordie.com/servlet/s/playerInfo.html?portal=real_com&lang=en&room=1040&nick=a3VyaWVy".$HTTP_GET_VARS["url"]);
Das solltest Du auf keinen Fall tun.
Ich habe _nie_ gesagt, dass Du include() verwenden sollst.
1. include() ist nicht geeignet, um den Inhalt einer
externen Datei in einen String einzulesen.
2. obiges ist ein riesen Sicherheitsloch.
Du bindest wildfremden Quellcode ein und laesst ihn
auf Deinem Server ausfuehren. Das ist "lebensgefaehrlich".
Was das $_GET["url"] am Ende der URL noch soll, ist mir schleierhaft.
Jetzt die Frage, wo muss ich mit Teil 2 weitermachen. In der selben php datei, wo das obige Script eingesetzt ist, oder muss ich eine neue Datei erstellen, die sich die angaben aus der obigen hinaus nimmt?
Alles muss in ein und demselben Skript passieren.
Das Ziel ist ja offenbar eine Rangliste.
Also musst Du zuerst mal alle Namen/IDs haben.
Wie Du an die rankommen willst, hast Du uns
uebrigens auch noch nicht verraten.
Vermutlich nach dem gleichen Schema:
a) Fremde Seite in einen String einlesen.
b) Diesen String analysieren.
Die Namen kommen dann z.B. in ein Array.
Dann durchlaeufst Du eine Schleife.
Mit jeden Namen tust Du folgendes:
{
1. Passende Seite auf dem fremden Server abrufen.
HTML-Quelltext, den die Seite zurueckgibt, in einen String schreiben.
2. String analysieren und Punktzahl fuer den Spieler ermitteln.
3. Punktzahl dem Spieler zuordnen (weiteres Array oder so)
}
Nun musst Du noch die Namen nach Punktzahl sortieren,
und das ganze als HTML-Liste/Tabelle zurueckgeben.
Dein ganzes Vorhaben ist also ziemlich komplex,
und das Skript wird voraussichtlich sehr langsam
sein, weil es ja sehr viele Daten ueber HTTP
beim fremden Server abholen muss.
Vielleicht sogar zu langsam.
Wenn es laenger als 30 Sekunden braucht,
wird es normalerweise "sterben", es sei denn,
Du setzt die Lebenszeit hinauf mit
ini_set("max_execution_time","300")
oder so, je nachdem, was Du den Besuchern
zumuten willst...
Natuerlich waere es einfacher, bequemer und
IMHO auch sinnvoller, wenn der Webpublisher
der fremden Seite die Liste selbst herstellen wuerde,
denn er hat unmittelbaren Zugriff auf die Daten,
wahrscheinlich sogar auf dem gleichen Server.
Wenn Du aber das ganze Gebastel von A - Z durchziehst,
dann hast Du eine Menge ueber PHP gelernt.
Also noch einmal: Ich glaube, Du hast noch nichtmal
Schritt 1 geloest, naemlich das Einlesen einer fremden
HTML-Seite in einen String.
Fuer einmal mache ich eine Ausnahme und
liefere Dir eine Silbertablett-Loesung, die ich
auch getestet habe:
/* Um sicher zu sein, dass fremde URLs erlaubt sind: */
ini_set("allow_url_fopen","1");
print("<p>Konfigurations-Variable allow_url_fopen ist auf [".ini_get("allow_url_fopen")."]</p>\n");
/* URL der fremden Seite definieren: */
$fremdurl="http://www.tiptom.ch/tests/html/ultra401.html";
$fremdurlhtml=htmlspecialchars($fremdurl); /* zwecks Ausgabe in HTML-Quelltext: & -> & u.s.w.*/
/* Einlesen der fremden Seite in eine String-Variable: */
$fremdhtml=file_get_contents($fremdurl);
/* Pruefen, ob es erfolgreich war: */
if ($fremdhtml==FALSE)
print("<p><b>Fehler:</b> Das Einlesen der fremden Seite (<a href='$fremdurlhtml'>$fremdurlhtml</a>) war nicht erfolgreich!</p>");
else
{
print("<p><b>Erfolg!</b> Das Einlesen der fremden Seite (<a href='$fremdurlhtml'>$fremdurlhtml</a>) war erfolgreich!</p>");
print("<p>Die fremde Seite enthaelt ".strlen($fremdhtml)." Zeichen.</p>\n");
print("<p>Es folgt der Inhalt der fremden Seite:</p>\n");
print("<hr>\n");
print(nl2br(htmlspecialchars($fremdhtml)));
print("<hr>\n");
}
So. Nachdem Du Dich von der Harmlosigkeit meiner winzigen Seite
http://www.tiptom.ch/tests/html/ultra401.html
ueberzeugt hast, kannst Du das Skript ja mal auf Deinem Server
laufen lassen.
Es funktioniert uebrigens auch mit Deiner URL, d.h. wenn Du
die Variable $fremdurl wie folgt definierst:
$fremdurl="http://www.flyordie.com/servlet/s/playerInfo.html?portal=real_com&lang=en&room=1040&nick=a3VyaWVy";
Der Rest - Schritt 2, das Extrahieren der "interessanten" Zahl - ist
eine Kleinigkeit mit den praktischen String-Funktionen von PHP:
(eine von 1000 Moeglichkeiten - die erste, die mir einfiel...)
$vorgaenger1="<b>Overall";
$reststring=strstr($fremdhtml,$vorgaenger1);
print("<p>Es folgt der erste Reststring:</p>\n");
print(nl2br(htmlspecialchars($reststring)));
print("<hr>\n");
$vorgaenger2=""normal">";
$v2laenge=strlen($vorgaenger2);
$reststring=strstr($reststring,$vorgaenger2);
print("<p>Es folgt der zweite Reststring:</p>\n");
print(nl2br(htmlspecialchars($reststring)));
print("<hr>\n");
$zahlstring=substr($reststring,$v2laenge,strpos($reststring,"<")-$v2laenge);
$zahl=intval($zahlstring);
print("<p>Die Zahl als String: [$zahlstring] und als Zahl: [$zahl]</p>\n");
print("<hr>\n");
(Alle print-Ausgaben dienen hier nur Deiner Information
und "Belehrung" ueber die Auswirkung der Funktionen.
Spaeter kannst Du sie loeschen oder - besser - auskommentieren.)
Natuerlich funktioniert das alles nur, solange
der HTML-Code und der Aufbau der Seiten
bei flyordie.com unveraendert bleiben.
Es steht also auf sehr, sehr wackeligen Fuessen.
Gruesse,
Thomas