PHP
PHP
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

Aplicación de chat en php, mysql y jQuery
Aplicación de chat en php, mysql y jQuery

Vamos a ver como crear un chat en php utilizando, mysql y jQuery, un chat en php y mysql con privados, posibilidad de enviar invitaciones y mucho más que pasamos a describir..

Nuestro chat en php tendrá varias opciones para que sea lo más completo posible, las consultas a la base de datos para hacerlas más seguras las haremos utilizando la extensión PDO de php.

Primero de todo echemos un vistazo al chat una vez instalado en nuestro servidor, lo bueno es que es compatible con todos los navegadores gracias al framework 960 grid system.

Aplicación de chat en php, mysql y jQuery

Para que nuestro chat en php trabaje lo único que debemos hacer es descargar el archivo que dejo a continuación que sólo pesa 180kb y descomprimirlo en nuestro servidor o si queremos probar en local en nuestra carpeta htdocs en windows o en la carpeta www en linux, a continuación siguiendo los pasos lo tendremos listo en 2 minutos.

Descargar el chat uno-de-piera.com

Ahora que hemos visto como puede quedar pasamos a describir las funciones y métodos más interesantes para que sepamos que es lo que tiene.

  • El archivo instalador
  • El sistema de chat dispone de un instalador localizado en la raíz llamado install.php, en el tutorial crear la base de datos y las tablas desde php podemos ver más o menos como se crea, si ejecutamos ese archivo veremos un formulario como el siguiente solicitando los siguiente datos:

    formulario de instalación del chat

  • Nombre de la base de datos donde alojaremos el chat
  • Usuario que puede acceder a la base de datos
  • Password de la base de datos
  • El nombre del servidor
  • La ruta donde estará alojada la aplicación, por ejemplo https://www.uno-de-piera.com/ importante que acabe con la barra invertida o no funcionará.
  • Este archivo lo que hace es crear las tablas de la base de datos y a la misma vez crea un archivo llamado configuracion.php donde guardamos algunas constantes necesarias para que funcione correctamente, lo único que debemos crear nosotros es la base de datos.

  • La librería inputfilter
  • Añadimos esta librería para dar seguridad a nuestra aplicación en la inserción de datos, con ella evitamos inyecciones de código y además podemos permitir etiquetas html, esto último será como veremos pasándolo como argumento a la llamada a la clase.

  • Uso del patrón singleton
  • Como ya vimos en el tutorial El patrón singletón en php haremos uso de él para no tener que estar creando nuevas instancias y que nuestra aplicación sea más ágil, esto lo conseguimos creando un constructor privado, un contenedor que será público y estático y un método público y estático que será con el que podamos acceder a nuestra clase u objeto.

  • Sistema de registros de usuarios
  • Haremos una función en php llamada new_register() para realizar un registro de usuarios, si el usuario se registra correctamente éste será logueado automáticamente, como seguridad utilizaremos una librería llamada inputfilter que nos permite pasar varios parámetros como veremos más adelante.

  • Sistema de login de usuarios
  • La función encargada de loguear a los usuarios se llamará login_usuario() y tendrá que realizar varias consultas mysql, insertar en la tabla online, en la tabla messages para mostrar el mensaje conforme el usuario ha entrado en la sala y sobretodo comprobar que el usuario existe en la base de datos.

  • Los smileys en el chat
  • La función mostrar_caritas() será la encargada haciendo uso de str_replace de reemplazar los caracteres que le pasemos a dicha función por el código html y de esta forma se podrán mostrar los smileys correctamente en la pantalla de las conversaciones. Para que esto funcione primero deberemos crear la siguiente función, que será la encargada de que al pulsar un smiley se introduzca un código en el campo de texto del chat, veamos.

  • La función javascript get_smileys()
  • Séra la encargada de que al pulsar un smiley el código que éste contiene se colocará en la caja de texto con id message y de esta forma gracias a la función php mostrar_caritas() será reempalazado realmente por la imagen pulsada.

  • El método php link()
  • Gracias al método link() al introducir un enlace en el chat éste será reconocido y colocado como un enlace gracias a la expresión regular que contiene dicho método, muy útil.

  • La función maintance()
  • Esta función tiene un papel muy importante ya que gracias a ella y al uso de setInterval de javascript podemos hacer un buen uso y mantenimiento de nuestra tabla messages. En nuestro caso lo que hará es ejecutarse cada 20 minutos y eliminar todos los registros de la tabla messages excepto los 100 últimos.

  • Obtener los mensajes con get_mges()
  • Esta función es bastante sencilla, lo interesante es ver como obtenemos primero los 100 últimos registros en la consulta mysql, y a continuación gracias a krsort le damos la vuelta al array y lo asignamos al array datos, para a continuación recorrerlo de nuevo y mostrarlos correctamente en el chat.

  • El método auto_logout()
  • Cada vez que escribimos un mensaje nuevo en el chat se actualiza la tabla online en la que tenemos un campo timstamp con el timestamp actual. Si el timestamp del usuario en la tabla online es menor que el timestamp actual menos 300, lo que significa que el usuario hace 5 minutos que no escribe, se le desloguea automáticamente gracias a una función javascript auto().

  • Sistema de privados entre usuarios (en esta versión sólo 1 privado)
  • Cuando pulsemos en un usuario que esté online y no tenga otro privado abierto se hará una inserción nueva en la tabla privates con tu usuario gracias a la función invite(), el usuario del invitado y un estado que será 0, con esto comprobamos que no exista ningun registro con esos datos en la tabla privates, si existe abortamos, en otro caso insertamos los datos. Si se inserta el registro se abrirá una nueva ventana al usuario que haya sido invitado para que la acepte o no con las funciones php response_ok() y response_reject(), si acepta se actualiza el campo status a 1 y se abre el hilo de comunicación, en otro caso caso se elimina el registro de la base de datos y se eliminan las ventanas de los dos usuarios.

  • Distintos textos al escribir en el chat
  • Agregamos una pequeña funcionalidad que permite poder escribir con subrayados, negrita y varios colores, aparte proporcionamos un enlace llamado link que al pulsarlo aparece una nueva ventana (prompt) que será donde debemos introducir el enlace que necesitemos y se colocará en el campo de texto del chat, esto último lo conseguiremos gracias a una función javascript que tenemos en la misma página del chat, sala_chat.php.

  • Las ventanas de los privados
  • Cuando el usuario invitado acepta la invitación se les permitirá enviar mensajes entre ellos, mientras no, y cuando uno de ellos cierre la ventana del privado automáticamente también se cerrará la del otro usuario.

  • El framework css 960 grid system
  • La maquetación del chat la haremos con el framework css 960 que nos proporciona compatibilidad con todos los navegadores, así como en distintas resoluciones, podéis ver como funciona en el framework 960 grid system.

  • Uso de degradados gracias a la librería PIE
  • Gracias a la librería PIE tendremos compatibilidad css en todos los navegadores, como veremos haremos uso de ellos y esta librería nos será realmente útil.

  • Archivo de instalación
  • Se recomienda que cuando finalicemos la instalación y hayamos podido comprobar que funciona todo bien eliminemos el archivo install.php o bien le cambiemos el nombre para evitar accesos y problemas.

Con esa explicación ya podemos hacernos la idea de como trabaja nuestro chat, si bien es cierto que faltan muchas cosas, en otras versiones las iré añadiendo, cualquier problema notificarlo para poder repararlo, está bastante probado y como veis alojado en un servidor funcionando perfectamente.