¿ Estan bien estos codes ?

Iniciado por Speeding, 2 Julio 2011, 08:17 AM

0 Miembros y 1 Visitante están viendo este tema.

Speeding

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 (php) [Seleccionar]
<?
$RemoteIP= $_SERVER['REMOTE_ADDR'];

if (($HTTP_GET_VARS) && ($RemoteIP == "127.0.0.1")){
    $Online = $HTTP_GET_VARS["online"];
    $Fnum = fopen("UsersOnline.txt", "w+");
        fwrite($Fnum, $Online, 4);
    fclose($Fnum);
    echo "0K";
}else{
    $Fnum = fopen("UsersOnline.txt", "r");
        $Online = fgets($Fnum, 4);
        echo $Online;
        fclose($Fnum);
}
?>
[/spoiler]

Estado del servidor:
[spoiler]
Código (php) [Seleccionar]
<?
$RemoteIP= $_SERVER['REMOTE_ADDR'];

if ($RemoteIP == "127.0.0.1"){
    $LastConnection = time();
    $Fnum = fopen("ServerState.txt", "w+");
        fwrite($Fnum, $LastConnection);
    fclose($Fnum);
    echo "0K";
}else{
    $Now = time();
    $Fnum = fopen("ServerState.txt", "r");
        $LastConnection = fgets($Fnum);
    fclose($Fnum);
    if ($Now - $LastConnection < 180){
        echo "Online";
    }else{
        echo "Offline";
    }
}
?>
[/spoiler]

Espero sus respuestas
Saludos ,P
a

engel lex

#1
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()
CitarDetermina 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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Speeding

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



a

Nakp

de hecho $_GET siempre está definida, lo ideal sería probar si el array no esta vacío con empty()
Ojo por ojo, y el mundo acabará ciego.

engel lex

Nakp: tienes razón! :s sorry el que no está definido son los espacios internos del $_GET[] ($_GET["algo"])
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.