wordpress visitor
» PHPInformática Práctica | Informática Práctica |

Contador de visitas únicas fácil con PHP y texto plano

Escrito por ffuentes el Thursday, 1 de September del 2011 a las 4:47

Hace un par de días estuve mostrándoles cómo hacer un contador de visitas simple y prometí continuar con un contador de visitas un poco más complejo. No es algo que haya hecho yo, sino que es algo que he visto y me parece interesante compartirlo.

Pues bien, la idea es detectar visitantes únicos, es decir, no marcar la visita de un usuario más de una vez, para lo que emplearemos la IP del usuario para distinguirles del resto.

Procedimiento:

No vamos a emplear una base de datos MySQL, simplemente texto plano para guardar las IPs, así que crearemos una carpeta /contador/ y en ella un archivo llamado ip.db que estará vacío.

Luego creamos a su lado, en la misma carpeta el archivo contador.db con la siguiente secuencia:

CODE:
  1. 0%0%0%0000 00 00%0

¿Esto qué será? Aquí estará el registro de cada día. El primer número representa el conteo de visitas de hoy. El siguiente (luego del signo de porcentaje) será el conteo de visitas de ayer, el tercero es el número de visitas en total. Los siguientes ocho números la fecha y el último cero, tras el símbolo de porcentaje es el número de días que tu script lleva operativo.

Dos scripts y acabamos:

El primer script y tal como aparece en el tutorial original, es el más fácil de entender porque es el HTML + PHP que mostrará nuestras visitas:

mostrarcontador.php

PHP:
  1. <table>
  2. <tr>
  3. <th colspan="2">Visitas únicas</th>
  4. </tr>
  5. <tr>
  6. <td><b>Hoy</b></td>
  7. <td>
  8. <?php
  9. $file_count = fopen('contador/contador.db', 'rb');
  10.     $data = '';
  11.     while (!feof($file_count)) $data .= fread($file_count, 4096);
  12.     fclose($file_count);
  13.     list($today, $yesterday, $total, $date, $days) = split("%", $data);
  14.     echo $today;
  15. ?>
  16. </td>
  17. </tr>
  18. <tr>
  19. <td><b>Ayer</b></td>
  20. <td>
  21. <?php
  22.     echo $yesterday;
  23. ?>
  24. </td>
  25. </tr>
  26. <tr>
  27. <td><b>Total</b></td>
  28. <td>
  29. <?php
  30.     echo $total;
  31. ?>
  32. </td>
  33. </tr>
  34. <tr>
  35. <td><b>Promedio del día</b></td>
  36. <td>
  37. <?php
  38.     echo ceil($total/$days);
  39. ?>
  40. </td>
  41. </tr>
  42. </table>

Que es fácil de entender, sencillamente abre y despliega en una tabla, los datos de contador.db.

Ahora necesitamos el contador, el real, el archivo que nos hará el trabajo sucio.

contador.php

PHP:
  1. <?php
  2.     $ip = $_SERVER['REMOTE_ADDR'];
  3.    
  4.     $file_ip = fopen('contador/ip.db', 'rb');
  5.     while (!feof($file_ip)) $line[]=fgets($file_ip,1024);
  6.     for ($i=0; $i<(count($line)); $i++) {
  7.         list($ip_x) = split("\n",$line[$i]);
  8.         if ($ip == $ip_x) {$found = 1;}
  9.     }
  10.     fclose($file_ip);
  11.    
  12.     if (!($found==1)) {
  13.         $file_ip2 = fopen('contador/ip.db', 'ab');
  14.         $line = "$ip\n";
  15.         fwrite($file_ip2, $line, strlen($line));
  16.         $file_count = fopen('contador/contador.db', 'rb');
  17.         $data = '';
  18.         while (!feof($file_count)) $data .= fread($file_count, 4096);
  19.         fclose($file_count);
  20.         list($today, $yesterday, $total, $date, $days) = split("%", $data);
  21.         if ($date == date("Y m d")) $today++;
  22.             else {
  23.                 $yesterday = $today;
  24.                 $today = 1;
  25.                 $days++;
  26.                 $date = date("Y m d");
  27.             }
  28.         $total++;
  29.         $line = "$today%$yesterday%$total%$date%$days";
  30.        
  31.         $file_count2 = fopen('contador/contador.db', 'wb');
  32.         fwrite($file_count2, $line, strlen($line));
  33.         fclose($file_count2);
  34.         fclose($file_ip2);
  35.     }
  36. ?>

Y eso es todo. Este php almacenará la IP de todos quienes ingresen a tu web, si alguien ha entrado antes (porque su IP está en ip.db), no contará la visita, pero si esa IP no estaba en tu ip.db, contará un nuevo visitante.

Al igual que en el contador de visitas anterior, si quieres usar este contador en tus páginas has de usar la función include, de la siguiente manera:

PHP:
  1. <?php include 'contador/contador.php'; ?>

Puedes hacer lo mismo con los datos de mostrarcontador.php.

El tutorial es una traducción libre del tutorial original de InObscuro: Simple PHP unique visitors counter de Nela Dunato. Usado con permiso.

Categoría: PHP, Tutoriales | No hay Comentarios »

Un simple contador de visitas con PHP

Escrito por ffuentes el Tuesday, 30 de August del 2011 a las 2:12

Estas son cosas que solían ir en Sólo Código, pero actualmente el blog sólo funciona como archivo histórico y no lo actualizo hace años. Así que aquí va:

Es un contador de visitas muy sencillo y hasta cutre, pero te servirá para conocer el tráfico en sitios donde no te importe demasiado si las visitas son únicas o no y te ayuda a no depender de sitios webs ajenos que te obligan a usar unos códigos javascript horribles que hasta pueden infectar tu sitio o poner una publicidad inaguantable.

Entonces debemos crear dos archivos (esto igual puede que lo hayas visto antes pero la publico como la opción para "perezosos", si quieres más funcionalidades ya podemos explicar algún ejemplo más complejo).

1. Creamos un archivo contador.php y pegamos esto:
2. Crear un archivo llamado visitas.txt.
3. En el primer archivo que suponemos está en la misma carpeta de la web que queremos monitorear, pegamos:

PHP:
  1. <?php
  2. $contar = ("visitas.txt");
  3. $hits = file($contar);
  4. $hits[0] ++;
  5. $fp = fopen($contar , "w");
  6. fputs($fp , "$hits[0]");
  7. fclose($fp);
  8. ?>

Y cerramos.

4. Abrir el archivo visitas.txt y escribir un número.
5. Visitar la página y corroborar que el número del archivo visitas.txt ha aumentado en un dígito.

Si queremos que el contador nos sirva en un sitio web, lo hemos de incluir dentro de la página de la siguiente manera:

PHP:
  1. <?php
  2. include ("counter.php");
  3. ?>

Y si le añades un:

PHP:
  1. echo $hits[0];

Te mostrará lo mismo pero en la propia web. Si no quieres que nadie más vea el resultado, déjalo como está.

Este tutorial lo leí en otros sitios y aparecía pero no era demasiado claro o a mi no me lo pareció y no le puse ningún número a visitas.txt y me pareció que no funcionaba, pero cuando se me ocurrió agregárselo, funcionó. Dicho lo anterior, se entenderá que yo, clases de PHP no podría dar, pero el ejemplo ya algo, aunque poco, nos enseña.

Durante esta semana mostraré otro ejemplo que es más interesante porque es un contador de visitantes únicos sin SQL ni cosas raras.

Categoría: PHP, Tutoriales | 2 Comentarios »

OpenCart – Tienda virtual Open Source y gratuita ideal para PYME

Escrito por ffuentes el Monday, 12 de July del 2010 a las 2:55

OpenCart

Para las empresas y sobre todo las más pequeñas, contar con buena tecnología para aprovechar su presencia en la web puede ayudar a mejorar de forma importante sus ventas.

Muchas empresas no aprovechan muy bien su presencia en la red e incluso pudiendo contar con tiendas virtuales por su rubro no las tienen por falta de conocimiento o de interés en la red. Esto hace que pierdan importantes ventas.

Si bien hay aplicaciones dedicadas al comercio por Internet gratuitas y libres, las alternativas que no eran tantas tampoco no eran sencillas de implementar por lo general, de ahí que la llegada de OpenCart vuelva todo tan interesante.

Se puede ver gracias a la demo disponible en el mismo sitio que la gran ventaja de este script es su facilidad de uso, accesible a cualquiera con una curva de aprendizaje muy leve y un aspecto muy agradable a la vista tanto en el exterior con sus plantillas como en el interior con su panel de administración.

OpenCart está basado en OsCommerce, pero está simplificado para su uso por pequeñas empresas que no tienen tiempo para hacerse (como dicen por aquí) un caldo de cabeza. Su descarga por supuesto, es gratuita. Funciona, por lo demás, en cualquier hosting con PHP y MySQL.

Categoría: open source, PHP, ventas | 3 Comentarios »

Cómo crear un cliente de Twitter con PHP

Escrito por ffuentes el Sunday, 21 de March del 2010 a las 9:34

En realidad lo que voy a mostrar a continuación es el modelo de un blog francés que, basado en la misma solución que nos permitió escribir el artículo anterior sobre publicar en twitter un rss con PHP, crea un sencillo pero efectivo cliente con PHP que puede publicar tuiteos, pero el problema es que aparte de estar en inglés, el blog a la fecha en que lo encontré no se encontraba disponible sino por la caché de Google, así que si llegase a desaparecer se encuentra acá.

Todo lo que hace falta es la "class" de PHP de Verkoyen que nos permite comunicarnos con Twitter y crear un formulario que se comunique con él:

Lo primero es crear un PHP que nos comunicará con la librería Twitter, lo podemos llamar functions.php (como el chico del tutorial original, aunque no influye en el resultado al menos en este caso):

PHP:
  1. <?php
  2.  
  3.  require_once('twitter.php');
  4.  
  5. function tweet($u,$p,$msg) {
  6.  
  7.  $twitter = new Twitter($u ,$p);
  8.  
  9.  $twitter->updateStatus($msg);
  10.  
  11.  }
  12.  
  13. ?>

Ahora que tenemos comunicación con Twitter, procedemos a crear una página en XHTML que podemos llamar index.php y ponerla en alguna carpeta en el servidor.

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  
  5.  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7.  
  8. <title>Mi primer cliente de Twitter</title>
  9.  
  10. </head>
  11.  

Sólo le hemos dado un inicio a nuestro documento. Lo que viene ahora, en el mismo documento es poner el PHP necesario para comunicarnos con el functions.php

PHP:
  1. <?php
  2.  
  3. require_once('functions.php');
  4.  
  5. if (isset($_POST['posted']) && $_POST['posted'] == 'yes') {
  6.  
  7. Message: ".$_POST['tweet']."
  8. ";
  9.  
  10. echo "Mensaje enviado!
  11. ";
  12.  
  13. tweet($_POST['twitter_username'],$_POST['twitter_password'],$_POST['tweet']);
  14.  
  15. } else {

Para que tenga sentido y sea realmente un cliente de Twitter, necesitamos un formulario (aunque sea un cliente muy rudimentario)

HTML:
  1. echo "
  2.  
  3. <form action='index.php' method='post'>
  4.  
  5. <p><label for='twitter_username'>Nick:</label>
  6.  
  7. <input type='text' name='twitter_username' id='twitter_username' /></p>
  8.  
  9.  <p><label for='twitter_password'>Password:</label>
  10.  
  11.  <input type='password' name='twitter_password' id='twitter_password' /></p>
  12.  
  13.  <p><label for='tweet'>Mensaje:</label>
  14.  
  15.  <textarea name='tweet' id='tweet' maxlength='140'></textarea></p>
  16.  
  17.  <input type='submit' value='Enviar'/>
  18.  
  19.  <input type='hidden' name='posted' id='posted' value='yes' />
  20.  
  21. </form>
  22.  
  23.  ";
  24.  
  25. }
  26.  
  27. ?>
  28.  
  29. </body>
  30.  
  31. </html>

Y listo! ya podemos tuitear.

El resultado es un sencillo cliente que nos muestra un campo (como ya han visto) de usuario, contraseña y mensaje a enviar, sin más pretensiones. El que sea tan simple y feo (pues no tiene CSS porque no es el objetivo del tutorial) no es impedimento por supuesto, para que puedas mejorarlo, añadirle funcionalidades y convertirlo en algo realmente útil y poder hacer cosas como leer tu timeline, generar respuestas (las famosas replies con @) y mucho más, con un diseño tan bonito como el que puedas diseñar.

Tanto el functions.php como el index.php los puedes copiar y pegar de lo de arriba, necesitarás descargar la clase Twitter de la web de Verkoyen.

Ojo con cURL que debe estar instalado y activado debidamente para que este sistema funcione, yo ya me he llevado sorpresas desagradables tratando de hacerlo funcionar. Si no pueden hacerlo, pongan comentarios y si pudieron pero tuvieron problemas, por favor, comenten también.

(Excelente idea escribir este artículo para el 4 cumpleaños de Twitter y pueden seguirme en @ffuentes_ )

Categoría: General, PHP, twitter | 4 Comentarios »

Twitter: Cómo ‘tuitear’ un feed RSS con PHP

Escrito por ffuentes el Sunday, 14 de March del 2010 a las 8:01

twitter-vs-rss1.jpg

Sabemos que para crear un Twitter de un blog u otra publicación, nos podemos servir de Twitterfeed o RSS2Twitter para "postear" automáticamente estos artículos, pero estos servicios no dejan de ser sencillos.

Sólo dos servicios nos permiten trabajar con RSS en Twitter, el primero se actualiza como máximo en 30 minutos, lo que, para algunas cosas es claramente insuficiente (por ejemplo, RSS de sismos, maremotos, caídas de sistema y otras que se pueden traspasar a Twitter pero requieren subirse de inmediato para que tengan utilidad). El segundo tarda todavía más.

Existe un script bien útil y bastante sencillo para lograr hacer esto desde nuestro propio hosting o servidor dedicado. El script fue creado por Stammy y lo pueden encontrar en su blog (no es algo nuevo, pero no todos, ni siquiera muchos, lo conocen y es necesario, creo, divulgarlo).

No pesa más de 4 kb. y todo lo que necesitan es rellenar el nombre de usuario, la contraseña del usuario de Twitter y por supuesto, la URL del feed. Se trata de dos archivos, el más importante: tw.php que es el que editaremos y parse.php.

Para que esto tenga sentido tienes dos opciones para utilizarlo, luego de haber preparado el PHP:

1. Ejecutar el php manualmente o automáticamente a través de otra aplicación
2. Utilizar el Crontab de tu hosting o servidor dedicado para que se ejecute en un intervalo de tiempo a tu gusto.

El script puedes descargarlo directamente aquí
o en el blog de Stammy.

Categoría: PHP | No hay Comentarios »

Formulario de contacto con archivos adjuntos en PHP sin MySQL

Escrito por ffuentes el Monday, 24 de August del 2009 a las 10:09

Me encontré en la siguiente situación: Necesitaba crear un formulario de contacto para mi web personal y deseaba que ésta soportase envío de adjuntos.

El problema es que la solución habitual para estos casos en que se necesita un campo de adjuntos es utilizar un formulario con la librería phpmailer, la cual exige contar con unas cuantas tablas de MySQL, las cuales no quería gastar en algo tan mínimo, por lo tanto buscaba una alternativa que no necesitase de tablas ni bases de datos.

Otras soluciones implicaban el uso de flash y de pago, por lo tanto no eran mejor idea, pero encontré  un script sencillo que hace todo lo necesario en un solo PHP.

Pertenece a NoSetup.org y como dije, hace todo en un sólo php, lo ideal es mantenerlo en una carpeta que tenga más permisos, pues almacena el archivo adjunto en la misma carpeta donde se encuentra (y el tamaño del adjunto es configurable)

Descarga el script: formulario de contacto con archivos adjuntos

Categoría: PHP | 9 Comentarios »

XtraUpload – CMS para crear un hosting de archivos

Escrito por ffuentes el Tuesday, 17 de March del 2009 a las 6:19

 screenshot_005.jpg

Me encontré buscando un hosting de imágenes algo muy bueno. Si les gustó Chevereto en su día como CMS para crear un hosting de imágenes, probablemente les interese otro proyecto un hosting de archivos para crear una web de acceso público o para tus datos personales o de un grupo.

Se llama XtraUpload y es un CMS para hosting de archivos gratis.

Permite prestar un servicio avanzado de hosting, está pensado para entregar hosting público, está habilitado para separar usuarios gratuitos de usuarios pagados y habilitar descargas premium con WebDAV, descargas más rápidas si es el caso y ordenar el espacio de cada cuenta y grupo de cuentas.

El sistema de subida de archivos es exclusivamente Flash, pero funciona bastante bien y lo aprovecha para no cargar varias páginas. También cuenta con captcha para controlar que ningún bot pueda subir archivos y subida remota de archivos desde URL.

Para instalarlo (lo probé completo antes de reseñarlo para ustedes) necesitan PHP 5 y MySQL 5 más el módulo GD, Freetype, SimpleXML y FTP. Si ya piensan usarlo en un hosting y no saben si cuentan con estos módulos pequeños, instalen el sistema y en el segundo paso el sistema les avisa qué tienen y qué no para que consulten luego con el soporte de su hosting.

El sistema admite plugins, además de skins para mejorar el aspecto de nuestro hosting que en principio tiene el aspecto de un blog.

Este hosting además de ser gratis es libre, cuenta con la licencia Apache.

Categoría: Hosting, PHP | 2 Comentarios »

Construye tu propio CMS

Escrito por ffuentes el Thursday, 29 de January del 2009 a las 6:39

PHP

No soy programador pero me gusta trastrear con estas herramientas que nos da la programación, a ver si por ahí, aprendo algo.

El caso es que hoy me he encontrado todo un tutorial para crear un CMS por nosotros mismos y con conocimientos propios de principiantes en PHP.

El tutorial nos enseña:

  • Cómo crear la base de datos.
  • Conectar la base de datos.
  • Crear un formulario para publicar los artículos.
  • Guardar el artículo en la base de datos que creamos.
  • Y cómo desplegar finalmente toda esa información desde la base de datos a la web.

El proceso no es complejo, en parte por estar muy muy bien explicado por el bloguero. De hecho tuve la intención de traducir el artículo completo pero no me animo a hacerlo por la hora y porque espero pedir el permiso del autor (no veo la licencia CC) o que algún bloguero con más conocimiento del área lo haga antes.

Pero de veras valdría la pena. Lo pienso intentar y les voy a contar cómo me va con el tutorial.

PHP for Begginers - Building Your First Simple CMS.

La imagen pertenece a Saucef

Categoría: PHP | 1 Comentario »

Detectar dispositivo móvil utilizando PHP

Escrito por J.F. el Tuesday, 29 de July del 2008 a las 16:46

El futuro del diseño de las páginas webs, y en general, el mundo de Internet, está en los teléfonos y dispositivos móviles. Cada vez es algo más cotidiano ver a alguien visitar su correo o leer la prensa desde su dispositivo móvil/PDA. Si por cualquier razón, deseas detectar diferentes dispositivos móviles, puedes hacerlo utilizando PHP y el siguiente código:

PHP:
  1. <?php
  2. $mobile_browser = '0';
  3.  
  4. //$_SERVER['HTTP_USER_AGENT'] -> el agente de usuario que está accediendo a la página.
  5. //preg_match -> Realizar una comparación de expresión regular
  6.  
  7. if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',strtolower($_SERVER['HTTP_USER_AGENT']))){
  8.     $mobile_browser++;
  9. }
  10.  
  11. //$_SERVER['HTTP_ACCEPT'] -> Indica los tipos MIME que el cliente puede recibir.
  12. if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or
  13.     ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
  14.     $mobile_browser++;
  15. }
  16.  
  17. $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
  18. $mobile_agents = array(
  19.     'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
  20.     'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
  21.     'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
  22.     'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
  23.     'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
  24.     'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
  25.     'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
  26.     'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
  27.     'wapr','webc','winw','winw','xda','xda-');
  28.  
  29. //buscar agentes en el array de agentes
  30. if(in_array($mobile_ua,$mobile_agents)){
  31.     $mobile_browser++;
  32. }
  33.  
  34. //$_SERVER['ALL_HTTP'] -> Todas las cabeceras HTTP
  35. //strpos -> Primera aparicion de una cadena dentro de otra
  36. if(strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
  37.     $mobile_browser++;
  38. }
  39. if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
  40.     $mobile_browser=0;
  41. }
  42.  
  43. if($mobile_browser>0){
  44.         // Mostrar contenido para dispositivos móviles
  45.         // Estos pueden ser más ligeros: un titulo, resumen y algunos enlaces.
  46.         // Aca puede redirigir a la ruta donde este el contenido para moviles
  47.         // Por ejemplo: http://miweb.com/movil ó http://movil.miweb.com
  48.     echo 'hola navegador cell phone';
  49. }else{
  50.         // Contenido que se puede apreciar en navegadores de escritorio
  51.         echo 'hola navegador normal';
  52. }
  53. ?>

Funciona con unos cuantos, sobre todo los más comunes como Opera Mini.

Vía: | Ribosomatic | Demo

Categoría: Diseño Web, General, PHP, Telefonía | 2 Comentarios »

Crea tu propio webmail en PHP con AtMail

Escrito por J.F. el Thursday, 29 de May del 2008 a las 7:04

Webmail, no es otra cosa que un cliente de correo electrónico basado en un entorno web. En la actualidad, con el avance de las tecnologías, los clientes de correos vía navegador están cogiendo popularidad, frente a viejos conocidos como Outlook.

AtMail es un proyecto open source surgido hace 10 años, pero que actualmente cuenta con un código basado en PHP+Ajax, cuya última versión fue liberada hace tan sólo unos días. Su manejo es muy parecido a Outlook, y es realmente rápido, además de estar en español.

Atmail

Enlace: | AtMail | Demo
Vía: | DosBit

Categoría: PHP, Recursos | No hay Comentarios »

« Entradas previas