Contador simple con Flash y PHP
En este artículo vamos a hacer un simple contador con Flash y PHP usando para ello un simple TXT.
1.- Creamos una carpeta que la llamaremos ‘counter’ y le daremos todos los permisos ‘777′
2.- Creamos un archivo txt llamado ‘counter.txt’, le daremos también todos los permisos ‘777′ y escribiremos de primeras este codigo:
&counter=1
3.- Creamos un archivo php (’index.php’) que tendrá el siguiente código:
<?
//Leemos el contenido del archivo
$archivo = 'counter.txt';
$fp = fopen($archivo, 'r');
$contenido = fgets($fp);
fclose($fp);
//Desglosamos el contenido del archivo php
$arrayArchivo = explode('=',$contenido);
$nuevoValor = $arrayArchivo[1]+1;
$nuevoContenido = '&counter='.$nuevoValor;
$archivo = 'counter.txt';
$fp = fopen($archivo, 'w+');
fwrite($fp, $nuevoContenido);
fclose($fp);
?>
Este código lo que hace es que primero abre el archivo como solo lectura, lee el contenido. Utilizamos la funcion ‘explode’ para separar mediante un caracter (=) la cadena; nos devuelve un array. El valor 0 del array será ‘&counter’ y el valor 1, ‘1′.
A ese valor le sumamos uno mas. Volvemos a abrir el archivo, pero esta vez como lectura-escritura borrando su contenido y escribimos ‘&counter=’ concatenado con el valor nuevo. (&counter=2).
4.- Una vez hecho esto incluimos el codigo necesario para agregar un .swf al código HTML y al que añadiremos una variable num y le concatenaremos un ‘echo’ del nuevo valor calculado anteriormente en el PHP
... <param name="movie" value="counter.swf?num=<?php echo $nuevoValor ?>"> <param name="quality" value="high"> <embed src="counter.swf?num=<?php echo $nuevoValor ?>" quality="high" …
5.- Lo último que nos queda sería crear el archivo swf. Para ello crearemos un nuevo swf normal y corriente con un cuadro de texto con nombre de instancia ‘visitas_txt’. En el mismo fotograma añadiremos esta línea en el panel de acciones del fotograma:
visitas_txt.text = num; //num es la variable que se le ha concatenado al nombre del swf.
Guardamos el fla y publicamos el swf como ‘counter.swf’.
Podeis ver un ejemplo del contador aquí.
Podeis descargaros un zip con el .fla, .swf, .php y .txt. counter.zip (7 kb)
Actualización: Hablando con David, mi compañero de trabajo, me hace una observación sobre el código: no hace falta abrir dos veces el archivo, una para lectura y otra para escritura, basta con abrirlo solo una vez con formato ‘a+’ [Apertura para lectura y escritura; ubica el apuntador de archivo al final del mismo. Si el archivo no existe, intenta crearlo.] Así que visto así el código sería:
<?
//Leemos el contenido del archivo
$archivo = 'counter.txt';
$fp = fopen($archivo, 'a+');
$contenido = fgets($fp);
//Desglosamos el contenido del archivo php
$arrayArchivo = explode('=',$contenido);
$nuevoValor = $arrayArchivo[1]+1;
$nuevoContenido = '&counter='.$nuevoValor;
fwrite($fp, $nuevoContenido);
fclose($fp);
?>
Estaria bueno ver como seria en ASP, sos conocedor de ese lenguaje como para publicar un ejemplo?
Gracias y te felicito por tu blog.
Hola Diego.
Pues mira con respecto a ASP lo conozco, no con tanta facilidad como PHP pero aún así podría hacer un ejemplo para ASP. Solo que tardaría un poco más en hallar la forma.
En cuanto lo tenga dejaré una entrada en el blog.
Saludos, gracias por las felicitaciones, me alegro que te guste el blog y no dejes de visitarlo
Santi M
Ejemplo de lectura de un txt en ASP..
Referencia: http://www.aspfacil.com/articulos/fso.asp
································································································
Dim objFSO
Set objFSO = Server.CreateObject(”Scripting.FileSystemObject”)
Dim objTextStream
const strNombreArchivo = “C:\carpeta\direcciones.txt”
const fsoLectura = 1
If objFSO.FileExists(strNombreArchivo) then
Set objTextStream = objFSO.OpenTextFile(strFileName, fsoLectura)
Response.Write “El contenido del archivo es:”
Do while not objTextStream.EOF
Response.Write objTextStream.ReadLine
loop
objTextStream.Close
Set objTextStream = Nothing
Else
Response.Write strFileName & ” No se ha encontrado”
End If
Set objFSO = Nothing
································································································
La clave es el FileSystemObject..
Hombre!!!
Muchísimas gracias markshock. Gran link y utilísimo código.
Diego, ahí lo tienes
Salu2
Santi M.
Hola: Me interesa el tema del contador en ASP, pero la verdad es que no se nads de ese lenguaje, por lo que no se adaptar el codigo al contador.
He buscado por todos lados un contador en ASP sin resultados positivos.
Bueno, si alguien que lee el blog puede adaptarlo, seria formidable.
Hola soy hector me parece muy bueno el ejemplo aunque no entiendo muy bien si aparte del codigo que esta escrito sobre el contador, tambien hay que agregarle lo que esta en el cuadro de abajo, pero me parece muy bien Gracias….
es posible hacer que un contador no parta desde 0 ?, es decir que parta de la visita 1600 en adelante? … esto puede ser necesario cuando se incluye un contador cuando la página está publicada de antes, muchas gracias de antemano a cualquier respuesta.
[hector]
El código está explicado por partes, y lo que se ve al final es el código entero pero cambiado el tipo de fopen (de abrir el archivo). Lo recomendable es usar este último código, aunque puedes usar el comentado de más arriba.
[etab]
Se puede hacer, en el archivo txt donde se guardan las visitas, lo creas de principio cuyo contenido sea &counter=1600
El procedimiento para el resto de archivos no cambia.
Salu2
Santi M.
me aparece un mensaje de undefined en el index.php? tengo boien las variables y todo
Hola Carlos.
Eso puede ser porque no esté cargando el contenido del archivo php correctamente. Revisa si están en la misma carpeta.
Salu2
Santi M.
Hola que tal,
A mi me sucede exactamente que el amigo Santi M., me aparece undefined en el swf y tengo todo dentro de la misma carpeta. Muchas gracias
yo necesito un contador de comentarios para un libro de comentarios en php y donde se guardan los comentarios en un archivo de txt ¿cómo lo puedo hacer?
Hola fanny.
Lo que pretendes hacer lo puedes hacer de la misma forma que con este artículo. El código PHP que edita el TXT es el mismo que el del artículo.
Salu2
Santi M.
hola muy buesno tu sitio web pero sabes no me resulta el contador…mmmm tengo que guardarlose en una misma carpeta en el ftp…o serparar y colocar el que corresponde en php y bloc no tas donde guardo eso seria me falto es nomas creo no????
Tomas
muchas gracias
Hola fijate que soy nuevo en esto pero intento hacer este truco pero me sale un mensaje siempre de “?php” y no se que pase alguin me puede ayudar?…
Saludos desde El Salvador…