Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear chat privado

Estas en el tema de Crear chat privado en el foro de PHP en Foros del Web. Buenas a todos! Estoy creando una aplicación web donde ya tengo una tabla en la base de datos para los usuarios, un login...etc. Lo que ...
  #1 (permalink)  
Antiguo 04/02/2014, 19:29
Avatar de mikasa  
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Crear chat privado

Buenas a todos!

Estoy creando una aplicación web donde ya tengo una tabla en la base de datos para los usuarios, un login...etc. Lo que quiero hacer es un apartado donde sólo dos usuarios puedan chatear, tengo ya un apartado donde llamo a dos variables $usuario1 y $usuario2 para acceder a todos los elementos de esos usuarios (nombre, direccion,email...etc), lo que quiero es saber cuándo cualquiera de los dos está conectado y en caso de que lo esté poder abrir una ventana de chat y mantener una conversación con el otro, guardando los logs de la conversación en la base de datos.

¿Conocéis alguna especie de módulo ya creado o algún manual que pueda seguir o al menos darme una pista de cómo poder hacerlo?


Gracias por adelantado!
  #2 (permalink)  
Antiguo 04/02/2014, 19:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Crear chat privado

Yo he usado el de http://anantgarg.com/2009/05/13/gmai...e-jquery-chat/ y funciona bien; lógicamente, deberás adaptarlo a tu sitio.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/02/2014, 19:59
Avatar de mikasa  
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Crear chat privado

Mil gracias @Triby a este le había estado echando un vistazo y está genial para esta función. De hecho le he implementado algunas sentencias de sql para que guarde los datos en la db a modo de logs ya que tal y como venía no me los guardaba. Ha sido muy fácil de implementar en este sentido.

Donde me pierdo bastante es en cómo saber si un usuario está conectado o no y cuando lo esté dar la opción de abrir la ventana de chat. Actualmente tengo un botón que abre la ventana de chat esté o no conectado el usuario. Mi idea es... si un usuario inicia sesión aparece el botón de chat, sino aparece un botón de que el usuario está desconectado, pero ¿cómo sé si lo está o no?

Gracias de nuevo!
  #4 (permalink)  
Antiguo 04/02/2014, 20:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Crear chat privado

Por lo general, en la tabla de usuarios se agrega una columna para guardar la última acción realizada (página visitada, mensaje enviado en el chat, etc.); luego creas tu lista de usuarios en línea de acuerdo al tiempo que creas conveniente, por ejemplo, 5 minutos.

Realmente no es tan difícil, seguramente lo lograrás.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 05/02/2014, 08:03
Avatar de mikasa  
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Crear chat privado

Estoy intentandolo, a ver si alguien me puede echar una mano...

Tengo dos campos en la base de datos(usuarios) uno llamado session y otro time lo que quiero hacer es que cuando el usuario entre en la página se cree en esos campos el identificador de sesión en el campo session y genere el tiempo que lleva conectado en time.

Tengo el código así, pero no termina de hacer nada:

Código PHP:
                                                session_start();
                                                
$session=session_id();
                        
$time=time();
                        
$time_check=$time-600



                    
$sql="SELECT * FROM usuarios WHERE session='$session'";
                    
$result=mysql_query($sql);

                    
$count=mysql_num_rows($result);
                    if(
$count=="0"){

                    
$sql1="UPDATE usuarios SET session='$session',time='$time' WHERE user_id='$user_id'";
                    
$result1=mysql_query($sql1);
                }else{
                    
$sql2="UPDATE usuarios SET time='$time' WHERE session='$session'";
                    
$result2=mysql_query($sql2);
                    }

                    
$sql3="SELECT * FROM usuarios WHERE session='$session";
                    
$result3=mysql_query($sql3);
                    
$count_user_online=mysql_num_rows($result3);
                    echo 
"User online : $count_user_online "
Con el sql3 estaba probando que almenos me mostrase que hay un usuario conectado para luego pasar por una variable el nombre de ese usuario en concreto y decir por ejemplo que "Pepe está conectado."

¿Qué estoy haciendo mal?

Gracias!!!!!
  #6 (permalink)  
Antiguo 05/02/2014, 13:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Crear chat privado

Qué es lo que guardas en el campo session y qué contiene la variable $session?

Suponiendo que es el nombre del usuario, en cada acción realizada debes actualizar, más o menos así:

Código PHP:
Ver original
  1. if(/* comparación para saber que es usuario registrado */) {
  2.        $time = time();
  3.        $sql = "UPDATE usuarios SET time=$time WHERE user_id='$user_id'";
  4.        mysql_query($sql) or die('Error en consulta: ' . mysql_error());
  5. }
  6.  
  7. // Para contar y obtener los usuarios conectados en los últimos 5 minutos:
  8. $time_check = time() -  600;
  9.  
  10. // No es necesario leer toda la tabla, solo los campos que vas a utilizar
  11. // La consulta debe ser "hace 5 minutos o menos", por eso el >=
  12. $sql = "SELECT user_id, user_name FROM usuarios WHERE time >= $timecheck";
  13. $res = mysql_query($sql) or ('Error en consulta: ' . mysql_error());
  14.  
  15. $conectados = array();
  16. while($row = mysql_fetch_assoc($res)) {
  17.        $conectados[] = $row;
  18. }

Con el array $conectados puedes obtener el total de usuarios conectados usando count() y puedes recorrerlo para crear la lista de usuario.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 05/02/2014, 19:33
Avatar de mikasa  
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Crear chat privado

Mi idea era guardar en la variable $session la id de la session que se inicializa cuando un usuario registrado entra en la página.

Mil gracias de nuevo @Triby estoy haciendo pruebas con ello a ver si por fin lo consigo

Gracias de nuevo, la verdad es que lo modifique un poco para llegar a lo que yo quería y me ha ido muy bien. Lo pongo como solucionado!

Última edición por mikasa; 10/02/2014 a las 14:32

Etiquetas: chat, privado, tabla, usuarios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:57.