Call of Duty Server Stats versie 2

Door Mark PHP, 20 jaar geleden, 5.000x bekeken

Ik had een aantal jaren geleden ooit een versie gemaakt (http://www.phphulp.nl/php/scripts/7/146/). Vandaag in een opwelling even een nieuwe, beter gecodeerde (in my opinion) geschreven.

Getest op Call of Duty 2 en 4, mogelijk werkt deze (aangepast) ook met andere games zoals MoH etc. Geeft naast alle cvars (instellingen) van de server ook de naam, score en ping van de spelers (gesorteerd) weer. Zie ook http://img248.imageshack.us/img248/6327/version2classim0.gif . Geen werkend voorbeeld omdat de enige PHP-host die ik momenteel heb geen sockets ondersteund.

Layout is niet prachtig (heb er overal even simpel php doorheen gevlochten (zoals de "die;")), maar daar ging het mij niet om. Als mensen dit gaan gebruiken is het aan te raden om het even netjes in templates of wat dan ook te zetten, maar dat is persoonlijke voorkeur.

Beargumenteerde kritiek welkom.

EDIT: Heb 'm in een class gezet, code is aangepast. Bij de bugs nog het probleem dat Rick aangaf. Tijdens het maken had ik deze melding ook nog een keer, echt geen idee waar dat door kan komen.

Voorbeeld: http://img248.imageshack.us/img248/6327/version2classim0.gif

Gesponsorde koppelingen

PHP script bestanden

  1. call-of-duty-server-stats-versie-2

 

Er zijn 18 reacties op 'Call of duty server stats versie 2'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
PHP_SELF wil je echt niet!!!!!
basename(__FILE__); is het goede alternatief...
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
@lode,

Onderbouw dit even.
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
je kan met valse headers bijna all $_SERVER vars spoofen...
omdat php afhankelijk is van IIS / apache voor de headers.

dus geloof me als ik zeg hardcoden en valideren...

EDIT:
http://www.scriptorama.nl/security/tips-veiligere-site-phpself
minimaal NL voorbeeldje... beetje dos kenner o.i.d. komt een stuk verder...
Simon Blok
Simon Blok
20 jaar geleden
 
0 +1 -0 -1
hmm...interessante reactie Lode. Ik was hier ook niet van op de hoogte.
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
geef me maar een ip van een webserver die $_SERVER gebruikt... ;-)

Met Dos e.d. kan je nog veeeeeeeeeeeeeeeeeeeeeeeeel meer...
En dan hebben we het nog niet eens over root hacks en dDos

NB.
heb niet zoveel posts hier... maar doe dit ook al meer dan 10 jaar...
Martijn B
Martijn B
20 jaar geleden
 
0 +1 -0 -1
In dat stukje van jou staat alleen PHP_SELF, of kun je nog meer in $_SERVER veranderen?
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
bijna alles....
maar wat heb je nodig ? ik eigenlijk alleen $_SERVER['REMOTE_ADDR']...
en ja die valideer ik...
HTTP_HOST... come on... 1 define en je bent klaar...

assumption is the mother off all f*ck-up's...

Dus niet doen...
Martijn B
Martijn B
20 jaar geleden
 
0 +1 -0 -1
Wat bedoel je nou?

REMOTE_ADDR wist ik, even htmlspecialchars er overheen en klaar.

Kun je ook SERVER_NAME veranderen?
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
het enige wat ik weet dat veilig is... is REMOTE_ADDR, maar goed ik ben geen 1000% apache freak... omdat ik ook genoeg met IIS van doen heb...
Zoals ik al zei vertouw ik zelfs die niet meer...

En ik weet dat je met dos heel veel hele zieke grappen kan uithalen met (web)servers...

nogmaals het gaat om 'assumptions' en 'expectation patterns' en die heeft ongeveer de hele wereld dus als je daar op anticipeerd kreeg je meestal antwoorden....
Cake Masher
Cake Masher
20 jaar geleden
 
0 +1 -0 -1
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in C:\Apache2\htdocs\***\server stats\cod2.php on line 220
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
215)            }
216)
217)             /* Sort players on score, ping and name */
218)             array_multisort($score, SORT_DESC, SORT_NUMERIC,
219)                             $ping,  SORT_DESC, SORT_NUMERIC,
220)                             $name,  SORT_ASC,  SORT_STRING);
221)
222)         }




Warning: Invalid argument supplied for foreach() in C:\Apache2\htdocs\***\server stats\cod2.php on line 273

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
273)    <?php foreach($score as $player => $value) {
274)    $class = ($player % 2 == 0) ? 'odd' : 'even'; ?>



Ik krijg dus wat anders dan jouwn voorbeeld...
Lode
Lode
20 jaar geleden
 
0 +1 -0 -1
@rick

type casten?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
215
)            }
216)
217)             /* Sort players on score, ping and name */
218)             array_multisort(
                                   (
array) $score, SORT_DESC, SORT_NUMERIC,
219)                             (array) $ping,  SORT_DESC, SORT_NUMERIC,
220)                             (array) $name,  SORT_ASC,  SORT_STRING);
221)
222)         }
?>


Helpt vast wel...
Bo az
Bo az
20 jaar geleden
 
0 +1 -0 -1
Voor dit stukje code":
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
foreach($players as $i => $player) {
                preg_match($regex, $player, $info);
                array_shift($info);//delete complete player line
    
                $score[$i] = $info[0];
                $ping[$i]  = $info[1];
                $name[$i]  = $info[2];
            }

Zouden eigenlijk even de array's score, ping en name aangemaakt moeten worden, gewoon even $score = array(); etc.
Mark PHP
Mark PHP
20 jaar geleden
 
0 +1 -0 -1
@Lode
Ik zal het aanpassen, interessant artikel.

@Rick
Dat probleem krijg ik nu ook als ik sommige IP's invul. Punt is dat er wel geconnect wordt, maar de server 'disconnect' teruggeeft als data. Vervolgens voer ik hetzelfde IP in in versie 1.2 en dan werkt 'ie wel gewoon. Vaag.

Ga er even naar kijken, denk dat ik er gelijk een PHP5 class van maak, is wat netter, ookal heeft iemand dat al gedaan zie ik net.

EDIT: heb er nu een class van gemaakt, code is aangepast. Heb ook de regex in color function weggehaald, dat kon een stuk slimmer.

Die bug blijft bestaan dus, volgens mij ligt het aan de fwrite (ÿÿÿÿ), maar geen idee hoe precies.
Bo az
Bo az
20 jaar geleden
 
0 +1 -0 -1
@Agirre, treed die bug niet alleen bij lege servers op? Volgens mij heeft het daar namelijk mee te maken, zie ook mijn vorige post en probeer dat eens?
Mark PHP
Mark PHP
20 jaar geleden
 
0 +1 -0 -1
Nee, dat is volgens mij het probleem niet, dat werkt prima. Punt is dat als ik in Dreamweaver iets willekeurigs verander, de ÿÿÿÿ in fwrite zomaar verdwijnen. Als ik deze terugtyp, werkt het niet meer (heeft misschien iets met charsets te maken ???).

Het script aanpassen via kladblok geeft geen problemen (tot nu toe).
Cake Masher
Cake Masher
20 jaar geleden
 
0 +1 -0 -1
Quote:
Ga er even naar kijken, denk dat ik er gelijk een PHP5 class van maak, is wat netter, ookal heeft iemand dat al gedaan zie ik net.


en die iemand ben ik xD..

veder gebruik ik Frontpage2003 voor m'n websites.. werkt goed genoeg..

ik zou niet weten waar het aan licht..
Bo az
Bo az
20 jaar geleden
 
0 +1 -0 -1
verander die ÿÿÿÿ eens in :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php chr(255).chr(255).chr(255).chr(255) ?>

Werkt net zo goed volgens mij...
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bart
Bart
18 jaar geleden
 
0 +1 -0 -1
ik krijg het helemaal niet aan de praat.. klopt het dat het niet meer werkt?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. call-of-duty-server-stats-versie-2

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.