PHP - Función contador

 
Vista:

Función contador

Publicado por Damon (5 intervenciones) el 14/03/2020 04:04:07
Intento implementar una función contador que me cuente las visitas de una página en php, pero no sé por qué, no me cuenta las visitas, es decir, se queda siempre en 1, por mucho que actualizo la página. La tengo en servidor local, con wamp, pero debería funcionar igualmente, ¿no? Este es el código:

1
2
3
4
5
6
7
8
9
<?php
    function contador($archivo){
        $fp = fopen($archivo, 'rw');
 
        $num= fgets($fp,5);
        $num+=1;
        echo 'Usted es el visitante número: '.$num;
    }
?>

En la página web en cuestión, llamo a la función de la siguiente manera:

1
2
3
4
5
<?php
$visita = "contador.txt";
include('cuenta.php');
contador($visita);
?>

donde contador.txt es el archivo txt donde se guarda el índice de visitas que ha de sobreescribirse cada vez que entra una visita nueva, pero no se sobreescribe, y no entiend por qué. Si alguien fuera tan amable de echarme una mano, se lo agradecería. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Función contador

Publicado por Damon (5 intervenciones) el 14/03/2020 04:19:29
He añadido lo siguiente al código, después de $num+=1:

fwrite($archivo,$num);

Pero sigue sin sobreescribirlo. ¿Alguna sugerencia?

También he probado con:

fwrite($fp,$num,5);

pero nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 157
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Función contador

Publicado por Andres (67 intervenciones) el 14/03/2020 04:32:47
Ve si hay algo en el log de errores de PHP. Hasta mañana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función contador

Publicado por Damon (5 intervenciones) el 14/03/2020 07:58:20
El único error que me aparece en el log de errores de php con el wamp es este:

PHP Notice: Undefined index: BackupHosts in C:\wamp64\scripts\refresh.php on line 2113

pero no es de la hora en la que intenté ejecutar el código, es de antes, cuando abrí el wamp, ya que el mismo error me aparece en otras ocasiones anteriores de otros días.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Función contador

Publicado por Julio (830 intervenciones) el 14/03/2020 09:54:42
Hola.

Diría que tu problema es el modo de apertura del fichero. Apertura r es para sólo lectura y apertura w es para sólo escritura. No sé si mezclarlos es buena idea. Tienes, por ejemplo, la apertura r+ que es para lectura y escritura sin cargarte el dato que hay dentro (porque primero lo quieres leer). Si no te funciona, prueba con w+ que es lectura y escritura pero eliminando todo lo que hay en el fichero (no sé si primero puedes leerlo ahora mismo).

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Función contador

Publicado por joel (1269 intervenciones) el 14/03/2020 10:49:12
Para leer el contenido de un archivo, puedes hacerlo directamente con file_get_contents() y file_put_contents() (https://www.php.net/manual/en/function.file-get-contents.php, https://www.php.net/manual/en/function.file-put-contents.php) y luego abrir el archivo para guardar el nuevo valor... algo así:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function contador($archivo) {
    // leemos el valor actual
    $num=file_get_contents($archivo);
 
    // guardamos el nuevo valor
    file_put_contents($archivo, ++$num);
 
    return $num;
}
 
echo "Usted es el visitante número: ".contador("contador.txt");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar