Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Speeding en 2 Julio 2011, 08:17 am



Título: ¿ Estan bien estos codes ?
Publicado por: Speeding en 2 Julio 2011, 08:17 am
Wenaaz
Con los pocos conocimientos de PHP que tengo arme esto. Los dos son funcionales pero quiero saber si se podrian mejorar o si hay alguna recomendacion que me puedan dar.
Los hice para mi servidor de juegos.
Para poder tener esa informacion no solo en el cliente, sino tambien en la web.

Usuarios Online:
[spoiler]
Código
  1. <?
  2. $RemoteIP= $_SERVER['REMOTE_ADDR'];
  3.  
  4. if (($HTTP_GET_VARS) && ($RemoteIP == "127.0.0.1")){
  5.    $Online = $HTTP_GET_VARS["online"];
  6.    $Fnum = fopen("UsersOnline.txt", "w+");
  7.        fwrite($Fnum, $Online, 4);
  8.    fclose($Fnum);
  9.    echo "0K";
  10. }else{
  11.    $Fnum = fopen("UsersOnline.txt", "r");
  12.        $Online = fgets($Fnum, 4);
  13.        echo $Online;
  14.        fclose($Fnum);
  15. }
  16. ?>
[/spoiler]

Estado del servidor:
[spoiler]
Código
  1. <?
  2. $RemoteIP= $_SERVER['REMOTE_ADDR'];
  3.  
  4. if ($RemoteIP == "127.0.0.1"){
  5.    $LastConnection = time();
  6.    $Fnum = fopen("ServerState.txt", "w+");
  7.        fwrite($Fnum, $LastConnection);
  8.    fclose($Fnum);
  9.    echo "0K";
  10. }else{
  11.    $Now = time();
  12.    $Fnum = fopen("ServerState.txt", "r");
  13.        $LastConnection = fgets($Fnum);
  14.    fclose($Fnum);
  15.    if ($Now - $LastConnection < 180){
  16.        echo "Online";
  17.    }else{
  18.        echo "Offline";
  19.    }
  20. }
  21. ?>
[/spoiler]

Espero sus respuestas
Saludos ,P


Título: Re: ¿ Estan bien estos codes ?
Publicado por: engel lex en 2 Julio 2011, 08:42 am
realmente me parece mas aaconsejagle el uso de $_GET[] que $HTTP_GET_VARS

en el if deberias usar un isset($HTTP_GET_VARS) ya que si no está definida (es decir si no se pasaron valores) eso te producirá un error (y se supone que estás evaluando justo eso)

definición de isset()
Citar
Determina si una variable está definida y no es NULL.

no se para que verificas si la estan llamando de 127.0.0.1 :s asi solo el localhost podrá entrar

si quieres llevar un registro lo que sea que estás metiendo en "online" w+ no es el método mas indicado, ya que cada vez que lo llaman te estás tirando el fichero y borrando todo, en tal caso podrias usar "a"

en el caso del server igual pero al guardar ya que no le estás indicando una longitud, deberías agregarle un salto de linea (\n) para que fgets no tome todo (fgets toma el contenido linea por linea, si no hay saltos de linea, toda es una gran sola linea)

por cierto te recomiendo mucho el aprendizaje de mysql, no es para nada complicado y es mas rápido y simple que buscar en ficheros de texto plano


Título: Re: ¿ Estan bien estos codes ?
Publicado por: Speeding en 2 Julio 2011, 14:00 pm
Gracias por responder!
En cuanto a la verficacion de la IP, esta es 127.0.0.1, porque estoy haciendo todos los testeos en mi pc. Ahi iria la IP del hosting que contrate para mi servidor.
En ambos casos, lo puse para que si es el server quien accede al archivo, sea para actualizar los datos. En caso contrario (un usuario) los muestre.

Uso el "w+" por lo siguiente:
Cada X minutos, mi servidor conecta con el script, y actualiza la cantidad de usuarios que estan jugando para poder mostrarlo en la web.

Y lo mismo en el indicador de estado del servidor.
Si la ip es del servidor, guardo el tiempo.
Si no lo es, calculo el tiempo qe paso entre la ultima conexion del servidor, y el actual.
Si supera los 3 minutos (Si mi juego esta online no tendria que pasar) devuelvo como que el server esta offline.

Saludos :P





Título: Re: ¿ Estan bien estos codes ?
Publicado por: Nakp en 2 Julio 2011, 16:54 pm
de hecho $_GET siempre está definida, lo ideal sería probar si el array no esta vacío con empty()


Título: Re: ¿ Estan bien estos codes ?
Publicado por: engel lex en 2 Julio 2011, 19:04 pm
Nakp: tienes razón! :s sorry el que no está definido son los espacios internos del $_GET[] ($_GET["algo"])