PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skript aus PHP-Kit



racepat
20.04.2006, 20:34
Kann man einen Script, der für PHP-Kit gemacht wurde auch für WBB/JGS Portal benutzen?
Ich möchte den beigefügten Script in einer Box im Portal anzeigen.
Vielen Dank für Tips. :)

racepat
24.04.2006, 23:04
Hmm, hat niemand eine Idee, wie ich das lösen könnte?
Leider finde ich keine Lösung bis jetzt. ;(

Mathze
02.05.2006, 19:16
Ich glaub nicht ich hatte mal phpkit das funktioniert ganz anders als beim jgs-portal

eeleater
02.05.2006, 19:18
man könnte natürlich auch das in einem phpkit einfügen, und dann als iframe wieder ins wbb einbinden *gg*

big.jan
02.05.2006, 21:38
oder includen ;)

zum Tutl (http://de.php.net/include/)

racepat
17.05.2006, 19:37
Danke für die Links, ich probier und probier...... hab keine Chance. Kann mir jemand an meinem Beispiel helfen? Ich bin zu blöd, so wie es scheint! ;(

racepat
19.05.2006, 08:36
Wer kann mir beim Include- oder Iframe-Befehl helfen? Wäre sehr sehr froh, denn ich schnall das nicht! ;(

Vielen Dank!!! :hüpf:



<?php
// ================================================== ================================================== =====================
// RACECAST SERVER STATUS SCRIPT
// ================================================== ================================================== =====================
// DESCRIPTION: THIS SCRIPT PARSES THE RFACTOR RACECAST SERVER RSS FEED AND DISPLAYS THE SERVER STATUS OF A GIVEN IP-ADDRESS
// IT HAS BUILT-IN SUPPORT FOR CSS RENDERING, CHECKS IF THE FILE EXISTS AND IF THE SERVER IS LISTED.

// AUTHOR: JAAP WAGENVOORT
// E-MAIL: JAAP@GPCHAMPIONSHIP.COM
// DATE: 2006-02-04
// VERSION: 1.0

// INSTALLATION:COPY BOTH FILES TO YOUR WEBSITE (OR COPY/PASTE THE CONTENTS OF THIS FILE INTO AN EXISTING SCRIPT). THEN,
// CONFIGURE THE $IP VARIABLE (ON LINE 19 AND INSERT THE IP-ADDRESS OF YOUR OWN SERVER. FOR NOW, THIS SCRIPT
// ONLY LOOKS UP THE STATUS OF ONE SINGLE SERVER.
// ================================================== ================================================== =====================

//DEFINE IP-ADDRESS
$ip="80.86.187.215";

//DESCRIBE XML PARSER CLASS
class xmlParser{

var $xml_obj = null;
var $output = array();

function xmlParser(){

$this->xml_obj = xml_parser_create();
xml_set_object($this->xml_obj,$this);
xml_set_character_data_handler($this->xml_obj, 'dataHandler');
xml_set_element_handler($this->xml_obj, "startHandler", "endHandler");

}

function parse($path){

if (!($fp = fopen($path, "r"))) {
die("Cannot open XML data file: $path");
return false;
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($this->xml_obj, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_obj)),
xml_get_current_line_number($this->xml_obj)));
xml_parser_free($this->xml_obj);
}
}

return true;
}

function startHandler($parser, $name, $attribs){
$_content = array('name' => $name);
if(!empty($attribs))
$_content['attrs'] = $attribs;
array_push($this->output, $_content);
}

function dataHandler($parser, $data){
if(!empty($data)) {
$_output_idx = count($this->output) - 1;
$this->output[$_output_idx]['content'] = $data;
}
}

function endHandler($parser, $name){
if(count($this->output) > 1) {
$_data = array_pop($this->output);
$_output_idx = count($this->output) - 1;
$this->output[$_output_idx]['child'][] = $_data;
}
}

}

function filesize_url($url){
return ($data = @file_get_contents($url)) ? strlen($data) : false;
}


//INITIALIZE XML PARSER BY CREATING A NEW OBJECT
$p =& new xmlParser();

//CHECK IF THE FEED EXISTS
$pathtofeed = 'http://racecast.rfactor.net/rssfeed/RaceCastRSSFeed.xml';
$fsize = filesize_url($pathtofeed);

if($fsize){
//RSS FEED FILE EXISTS

//DEFINE TO THE BE PARSED RACECAST RSS FEED
$p->parse("http://racecast.rfactor.net/rssfeed/RaceCastRSSFeed.xml");

//FILL ARRAY WITH XML FEED
$arr = $p->output;

function in_multi_array($search_str, $multi_array)
{
if(!is_array($multi_array))
return 0;
if(in_array($search_str, $multi_array))
return 1;

foreach($multi_array as $key => $value)
{
if(is_array($value))
{
$found = in_multi_array($search_str, $value);
if($found)
return 1;

}
else
{
if($key==$search_str)
return 1;
}
}
return 0;
}

$p2 = in_multi_array('Dr',$arr);
$driverlist="";

//START ANALYSIS OF THE ARRAY, GO DOWN LEVEL BY LEVEL
while (list($key, $val_level_1) = each($p->output)) {

if (is_array($val_level_1)) {

while (list($key_level_2, $val_level_2) = each($val_level_1)) {

if (is_array($val_level_2)) {

while (list($key_level_3, $val_level_3) = each($val_level_2)) {

if (is_array($val_level_3)) {

while (list($key_level_4, $val_level_4) = each($val_level_3)) {

if (is_array($val_level_4)) {

while (list($key_level_5, $val_level_5) = each($val_level_4)) {

if (is_array($val_level_5)) {

while (list($key_level_6, $val_level_6) = each($val_level_5)) {

if (is_array($val_level_6)) {

while (list($key_level_7, $val_level_7) = each($val_level_6)) {

if (is_array($val_level_7)) {

while (list($key_level_8, $val_level_8) = each($val_level_7)) {

if (is_array($val_level_8)) {

while (list($key_level_9, $val_level_9) = each($val_level_8)) {

if (is_array($val_level_9)) {

while (list($key_level_10, $val_level_10) = each($val_level_9)) {
if($serverfound==1 && $val_level_10old=="NAME"){
$driverlist = $driverlist.$val_level_10."<br>";
}

$val_level_10old=$val_level_10;

}

}else{



}


}
}else{

}


}

}else{
if($serverfound==1 && $key_level_7=="TIMEREMAINING" && $val_level_6old=="SESSION"){
$timeleft=$val_level_7;

$rdiff = ($timeleft);
$rmin = (floor(($rdiff/60)));
$rsec = ($rdiff - ($rmin*60));
$rsec = number_format($rsec,0);

if ($rmin > 0){
$tl= "$rmin"."m";
}
if (($rmin > 0) && ($rsec < '10')) {
$tl=$tl."0";
}
$tl=$tl.$rsec."s";
}

if($serverfound==1 && $key_level_7=="LAPSREMAINING" && $val_level_6old=="SESSION"){
$lapsleft=$val_level_7;
}
if($serverfound==1 && $key_level_7=="NUMBER" && $val_level_6old=="PLAYERS"){
$numplay=$val_level_7;
}

if($serverfound==1 && $key_level_7=="MAXIMUM" && $val_level_6old=="PLAYERS"){
$maxplay=$val_level_7-1;
}
}
}

}else{

if($val_level_6old == "NAME"){
$name=$val_level_6;
}
if($val_level_6old == "IP"){
if($val_level_6==$ip){
$serverfound=1;
$ip=$val_level_6;
}else{
$serverfound=0;
}
}
if($serverfound==1 && $val_level_6old == "EVENT"){
$track=$val_level_6;
}
if($serverfound==1 && $val_level_6old == "SERIES"){
$car=$val_level_6;
}
if($serverfound==1 && $val_level_6old == "SESSION"){
$sess=$val_level_6;
}


$val_level_6old = $val_level_6;
}

}
}else{
}

}

}else{
if($serverfound==1 && $val_level_4old=="SERVER"){

//SERVER FOUND, RENDER DATA
if ($serverhasbeenfound=1) { eval ("\$boxlinks[0].= \"".getTemplate("rfserver/rfonline")."\";"); }

//IF THE CURRENT SESSION IS THE RACE, SHOW LAPS LEFT, ELSE SHOW THE REMAINING TIME
if($sess=="Race") { eval ("\$boxlinks[0].= \"".getTemplate("rfserver/rfrace")."\";"); }
}

$val_level_4old=$val_level_4;
}

}
}else{

}


}
}
}
}

}

//SERVER NOT FOUND IN FEED
if($serverhasbeenfound != 1){ eval ("\$boxlinks[0].= \"".getTemplate("rfserver/rfoffline")."\";"); }
}

else{
//RSS FEED FILE DOES NOT EXIST
echo "<table cellspacing='0' cellpadding='0' class='table'><tr><td valign='top'>";
echo "<span class='header'>Server status:</span>&nbsp;";
echo "</td><td>";
echo "<span class='server_offline'>RaceCast Feed Offline</span>&nbsp;";
echo "</td></tr></table>";
}
?>

racepat
20.05.2006, 20:31
Komme einfach nicht weiter. Habs auch mit der Anleitung von Jens (http://www.jgs-xa.de/artikel_wbb_710_Eine-eigene-Box-mit-Template-PHP-Code-einbinden.html) versucht.
Bitte kann mir jemand helfen?
Vielen Dank!

lupopa
22.05.2006, 21:47
Wart mal mit Deiner Bastelei :)

ich hab eben ein anderes Script bekommen, und teste es mal, gebe Dir dann heute abend noch bescheid..

Gruss Lupopa

lupopa
22.05.2006, 22:00
Hi, das brauchst nur noch anpassen..

die phpDatei ist selbsterklärend.

zum Download (http://www.oldmanclan.de/wbb2/jgs_db.php?action=show&eintrags_id=10&katid=5&sid=)

Box kannst ja selbst erstellen:)
Dann mit Iframe reinladen...

Mfg
Lupopa

racepat
23.05.2006, 00:36
vielen Dank, das Probier ich doch gleich aus! :)

äh.... kannst du mir mit iFrame helfen, hab ich so noch nie gemacht!

Herzlichen Dank!!!!! :))

lupopa
23.05.2006, 08:42
Du erstellst einfach eine neue Box und fügst das hier in etwa ein:


<iframe width="167" src="rFactor/rFactor.php" frameborder="no" scrolling="no" allowtransparency="true"></iframe>

Natürlich musst DU die "167" und den Pfad etc anpassen.

Wenn ich Zeit habe erstelle ich eine komplette Box mit allem drum und dran....
Das man diese einfach einbinden muss und feddisch...

Gruss Lupo

racepat
23.05.2006, 08:46
das wäre natürlich super!!!!!!! :D

racepat
23.05.2006, 12:50
Habs eingefügt, Fensteranzeige funktioniert; nur sei der Server offline.
Hab ich was in der .php falsch eingetragen?


<HTML>
<HEAD>
<meta http-equiv="refresh" content="30">
<TITLE>[GPCOS]: Server status on IP: <?php echo $ip;?></TITLE>
<LINK rel="stylesheet" href="stylesheet.css">
</HEAD>
<BODY class="page"><center>
<?php
//------============== DEDICATED SERVER SCRIPT v2.1 =======------------------
//------============ By: OPTIMO of UBERTECHNIK.com =======------------------
//---------------------------------------------------------------------------
// URL to Racecast XML Feed
$feedurl = "http://racecast.rfactor.net/rssfeed/RaceCastRSSFeed.xml";
// Tests if feed is up
if (@fclose(@fopen("$feedurl", "r")))
{
$racecastfeed = file_get_contents($feedurl);
// Searches for an indentifying part of your server name
//HIER DEN GENAUEN SERVERNAMEN EINGEBEN, GROSSKLEINSCHREIBUNG BEACHTEN!!!




$myserver = 'www.schikane.ch #DSL1';




$pos = strpos($racecastfeed, $myserver);
if ($pos === false)
{
echo "<b>Dedicated Server is <span class='server_offline'>OFFLINE.</span></b>";
}
else
{
{
$lines = file('http://racecast.rfactor.net/rssfeed/RaceCastRSSFeed.xml');
foreach ($lines as $line_num => $line)
{
// The "i" after the pattern delimiter indicates a case-insensitive search
//HIER DEN GENAUEN SERVERNAMEN EINGEBEN, GROSSKLEINSCHREIBUNG BEACHTEN!!!



if (preg_match("/www.schikane.ch #DSL1/i", $line))






{
echo strip_tags($lines[$line_num]),"<br>";
echo "<b>IP: </b>";
echo strip_tags($lines[$line_num+2]),"<br>";
echo "<b>Circuit: </b>";
echo strip_tags($lines[$line_num+4]),"<br>";
echo "<b>Serie: </b>";
echo strip_tags($lines[$line_num+5]),"<br>";
echo "<b>Session: </b>";
echo strip_tags($lines[$line_num+6]),"<br>";
echo "<b><u>Drivers Online:</u></b><br>";
$bad = $lines[$line_num-1];
$line_num = $line_num+9;
$total = count ($lines);
$driver = $lines[$line_num];
$bad2 = $lines[$line_num+1];
WHILE ($bad2 != $bad)
{
echo $driver,"<br>";
$line_num = $line_num+5;
$driver = $lines[$line_num];
$bad2 = $lines[$line_num+1];
}
}
}
}
}
}
else
{
echo "<b>Racecast RSS Feed is OFFLINE.</b>";
}
?>
</center>
</BODY>
</HTML>

lupopa
23.05.2006, 13:06
Du musst den GENAUEN Namen Deines Servers eintragen.. Ihr hab sicherlich NICHT das #DSL1 im Servernamen, oder?

also statt www.schikane.ch #DSL1

nur www.schikane.ch

in beiden Feldern eintragen...
ach so, und auf großkleinschreibung achten!!!

Gruss Lupo

racepat
23.05.2006, 13:43
ach herrje, klar! Hab ich korrigiert, dachte es seien Steuerzeichen.
Es kommt trotzdem noch ne komische Meldung: schau mal nach:_
www.schikane.ch (http://www.schikane.ch)

racepat
23.05.2006, 14:28
Hip hip hurra, es funktioniert!!!! Vielen Dank, geniales Teil.
Hat an mir gelegen.
Informierst du mich, wenn du mehr so Ideen hast?

racepat :D

racepat
23.05.2006, 23:27
Hallo Lupo,

Ist echt genial, dein Script. Hast du die auf deiner HP selbst gemacht?
Sieht cool aus mit den Maps, die auf den Serveranzeigen abgebildet werden. 8)

Hättest du mir noch nen Tip, wie ich die Boxenhöhe automatisch anpassen kann? Je nach Anzahl Fahrer verändert sich die Höhe und ein Teil der Namen ist nicht mehr sichtbar. ;)

lupopa
23.05.2006, 23:42
Hi,

also schau Dir mal das iframe an, da kannst die Höhe angeben... sie wird leider nicht automatisch variabel sein, oder Du probierst mal das ohne der höhe anzugeben, ob's dann automatisch die Größe ändert...

Das mit unseren Servern sind ja andere Scripts die schon fertig zum Download geben...

was das mit den rFactor angeht da will ich ma schauen, ob ich das so hinbekomme, das er auch die Übersicht der Strecke anzeigen kann....

ma seh'n...

Bin ab morgen abend erst mal bis Montag nicht da, haben Membertreffen ;)

Lupo

racepat
23.05.2006, 23:44
Hallo nochmal,

ja, mit der fixen Höhe geht es schon. :))

Viel Spass beim Treff! :D

racepat
29.05.2006, 11:19
Habs Stylemässig ein bisschen geändert. Nun mit einer Ampelanzeige.
www.schikane.ch (http://www.schikane.ch)
Schade ist nur, dass dieses Racecast nicht immer funktioniert.
Vielfach zeigt es den Server als offline an, obwohl er on ist.
Dasselbe kann ich auch auf der Racecast-Homepage feststellen.
Kann man so ein Tool ändern, dass es direkt auf dem Gameserver die Abfragen macht? Das wäre sicherer.