[Java & PHP] Tijd klopt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een klant van mij ben ik bezig om uit een java spel informatie aan het uitlezen dmv PHP. Een van de informatiebronnen is hoelang er iemand over doet om het spel te spelen, bijv. 34.544 seconden.

Erg vreemd is alleen dat als ik met PHP de tijd uitlees ik een tijd krijg van bijv. 35.000 ipv 35.324 maar als ik bijvoorbeeld het spel in DOS prompt uitlees dan krijg ik wel de precies tijd.

Ik heb echt al alles geprobeerd, o.a met een typecast (double) enz. Waar zou dit door kunnen komen ? Aan de server ligt het ook niet want ik heb het op twee verschillende servers geprobeerd.

De code ziet er zo uit:

code:
1
2
3
4
5
6
$decoded = strtr($_GET[ss], "abE2RK2WVMG)L.AYH^
FTOZ3P917I@(D0SBE5'NAX-8U6C", "&=@.'()^-0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ");
$decoded = $decoded." ";
$time = eregi_replace("(.*)(time=)", "", $decoded);
$time = eregi_replace("( )(.*)", "", $time);


Ik ben er nu al weet ik hoe lang mee bezig maar het lukt maar niet om de preciese tijd te krijgen :'(

[ Voor 14% gewijzigd door Verwijderd op 16-10-2003 10:16 ]


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

*gok* je vergeet de waarden achter de . mee te nemen onder php?

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Verwijderd

je tijd wordt toch duidelijk afgerond, dan ben je waarschijnlijk eerder dan je double cast met ints bezig :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ZiXon, dus dan zou ik het zo moeten doen ?

code:
1
2
(double) $time = eregi_replace("(.*)(time=)", "", $decoded);
$time = eregi_replace("( )(.*)", "", $time);

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

In welk formaat krijg je de string binnen? En dan bedoel ik GET formaat? of door een serialize? kortom hoe ziet de request string (met time=) eruit?

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jurgle, de string ziet er zo ong. uit PID=1&NAME=NAAM&PHONE=12345&MOVES=23&TIME=50265

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$get = strtr($_GET[ss], "abE2RK2WVMG)L.AYH^ 
FTOZ3P917I@(D0SBE5'NAX-8U6C", "&=@.'()^-0123456789 
ABCDEFGHIJKLMNOPQRSTUVWXYZ");

//ff omvormen naar een $_GET like array
$GET = array();
$tmp = explode("&", $get);
for($i = 0; $i < count($tmp); $i++)
{
   $t = explode("=", $tmp[$i]);
   $GET[$t[0]] = $t[1];
}

$GET['TIME'] = ((double) $GET['TIME'])/ 1000;


zoiets?

/edit:
Met regex:
PHP:
1
2
3
4
5
$decoded = strtr($_GET[ss], "abE2RK2WVMG)L.AYH^
FTOZ3P917I@(D0SBE5'NAX-8U6C", "&=@.'()^-0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ");
$decoded = $decoded." ";
$time = ((double) preg_replace("/(.*)(&time=)([0-9]*)(.*)/i", "\\3", $decoded))/1000;


zoiets?

PS die (double)'s zitten erin om zeker te zijn... ze zijn volgens mij niet eens nodig

[ Voor 127% gewijzigd door Jurgle op 16-10-2003 12:50 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Jurgle, de string ziet er zo ong. uit PID=1&NAME=NAAM&PHONE=12345&MOVES=23&TIME=50265
De tijd die hier genoemd wordt: '50265' moet dus een double 50.265 worden? Met regexen werken is echt niet nodig, hoor. Overigens is een double (precision floating point number) beetje overdreven voor waarden die enkel 3 cijfers achter de komma gaan bevatten.

code:
1
$float_value = (float) $_GET [ 'TIME' ] / 1000;


Als de punt wel in de TIME voorkomt kun je volgens mij gewoon direct casten:
code:
1
$float_value = (float) $_GET [ 'TIME' ];


Verder moet je gewoon dit stukje uit de manual even lezen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt guys :) Ik ga het nu uitproberen..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
:( helaas, het is nu 0.027 wat ik krijg. Maar ik heb $get ge-echood en toen stond er dit: PID=0&NAME=DDFFD&PHONE=FGDFF&EMAIL=DFGDFG&MOVES=17&TIME=30000
Dus het lijkt er toch op dat het spel gewoon een verkeerde tijd doorgeeft. Maar het blijft vreemd want in DOS geeft die wel de goede tijd door.. Wat het nog vreemder maakt is dat als ik het informatie-overzicht kijk (de admin) er offline 1 spel is geweest met wel een preciese tijd (24.594) en op de online server is er ook zo'n spel geweest die dus de goede tijd geeft. Maar er zijn daarnaast zo'n 10 spellen die de foute tijd heeft.. Erg vreemd allemaal :)
Pagina: 1