PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : URL weiterleitung erkennen



gamerpaddy
10.06.2012, 16:34
Hey, ich suche ein simples PHP oder Javascript (KEIN PROGRAMM!)
das veränderungen einer url erkennt

Beispiel:
ich mach ein request auf
http://steamcommunity.com/profiles/76561197997668955
(meine steamseite)

aber in der URL Steht dann
http://steamcommunity.com/id/gamerpaddy

Wäre das möglich, die daten von id /gamerpaddy über profiles/xxxxxxxx zu senden
um diese zb. in LUA oder Expression2 auszulesen?

Aktuelles problem:
ich hab ja mein Timecheck script..
nur dieses macht ein request auf die SteamID64 url (profiles...)
aber durch die weiterleitung auf id/name kommen keine daten mehr an, da die url nichtmehr stimmt
und die "namens" url kann ich auch nicht ausrechnen, da diese frei definierbar ist

Praktisch wäre ein simples php oder Javascript.. dass ich auf mein FTP werfe,
damit die URL Antworten auch richtig ankommen

Grüne Gurken
10.06.2012, 18:27
Nimm den PHP-Weg:


<?php

ini_set("display_errors","2");
ERROR_REPORTING(E_ALL);

//hier kannst du natürlich die steamid64 = übergabe-parameter whatever setzen
$steamid64 = 76561197997668955;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://steamcommunity.com/profiles/'.$steamid64.'/games?xml=1');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_DNS_CACHE_TIMEOUT,600);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_MAXREDIRS,1);

$xml_inhalt = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml_inhalt);

echo $xml->steamID64;

// die willst du ja wohl haben
echo $xml->steamID;

?>


Die Umleitung muss mit CURL-Optionen akzeptiert werden, deshalb geht zur Zeit auch das SteamAuth-System hier im Forum nicht.

Edit: und bevor du postest, dass das Script nicht geht: auf bplaced.net Freeuser sind fopen und curl wohl blockiert.

Du kannst dir natürlich bplaced.net Pro holen oder du gehst einfach zu einem richtigen Hoster wie z.B. uberspace.de (http://uberspace.de/)

gamerpaddy
10.06.2012, 19:55
Ich benutze das fopen prinzip (allow_url_fopen) nur auf square7.ch, da (wie du geschrieben hast) bplaced es nicht erlaubt

Anscheinend ist CURL auf Square7 auch nicht erlaubt :/
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /users/dgs/www/xml.php on line 14



Edit:
Ok
habe nun fopen probiert, er findet was ..
<?php

$steamid64 = $site = $_GET["xml"];
$xml_inhalt = fopen('http://steamcommunity.com/profiles/'.$steamid64.'/games?xml=1','r');
if($xml_inhalt){

$xml = simplexml_load_string(stream_get_contents($xml_inh alt,-1,0));

echo $xml->games->game->appID;
echo '</br>';
// die willst du ja wohl haben
echo $xml->games->game->hoursOnRecord;
}

?>

Der findet den ersten <game></game> eintrag, dieser ist bei den meisten Garrysmod
aber wie mach ich dass, wenn appID nicht 4000 ist, das er automatisch auf den nächsten <game> verweis springt?

Grüne Gurken
10.06.2012, 21:40
XPath im XML anlegen und foreach:


<?php

$steamid64 = $site = $_GET["xml"];
$xml_inhalt = fopen('http://steamcommunity.com/profiles/'.$steamid64.'/games?xml=1','r');
if($xml_inhalt){

$xml = simplexml_load_string(stream_get_contents($xml_inh alt,-1,0));


foreach($xml->xpath('//appID') as $appids){
if ($appids == '4000'){
echo $xml->games->game->hoursOnRecord;
}
}
}
?>

gamerpaddy
10.06.2012, 23:19
Ah danke, im php.de forum, bekam ich die antwort mitt xpath auch, nur ohne foreach



$xml = simplexml_load_string(stream_get_contents($xml_inh alt,-1,0));
$hrs = $xml->xpath("//game[appID=4000]/hoursOnRecord");