Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/10/2003, 03:42
PHP-Ref
 
Fecha de Ingreso: junio-2003
Mensajes: 31
Antigüedad: 23 años, 3 meses
Puntos: 0
Aqui te posteo un codigo realizado en php y mySQL realizado por un amigo de su web www.programacionweb.net

Vamos a explicar cómo hacer un chat utilizando PHP y MySQL, nos limitaremos a hacer las funciones básicas dejando para cada uno el diseño y los detalles, el primer paso que haremos será crear un archivo de conexión a la base de datos llamado conexion.php, que configuraremos de acuerdo con nuestras nescesidades:
Código PHP:
<? 
$db
=mysql_pconnect('direccion de la db','nombre de usuario','contraseña'); 
mysql_select_db("nombre de la bd",$db); 
?>

Y en esa base de datos crearemos dos tablas, la tabla c_mensajes:

Campo | Tipo | longitud
--------+---------+-----------
texto | text |
id | bigint | 20
color | varchar | 7


Y la tabla c_usuarios:

Campo | Tipo | longitud
--------+---------+-----------
nombre | varchar | 20
cookie | int | 11
time | int | 11


Una vez configurada la base de datos, crearemos la página principal del chat, una página que llamaremos index.php y que que tendrá tres frames que serán:
mensajes - Marco donde se mostrarán los mensajes
usuario - Marco donde interactuará el usuario
script - Marco invisible que escribirá los mensajes
El código que propongo para la página es:

index.php
Código PHP:
<html> 
<
head> 
<
title>Chat</title> 
</
head> 
<
frameset rows="*,62"> 
  <
frame src="about:blank" name="mensajes"> 
  <
frameset cols="*,0" frameborder="0"> 
     <
frame src="usuario.php" name="usuario" scrolling="no" noresize> 
     <
frame src="script.php" name="script" scrolling="no" noresize> 
  </
frameset> 
  <
noframes> 
  <
body> 
  <
p>Esta página usa marcos, pero su explorador no los admite.</p> 
  </
body> 
  </
noframes> 
</
frameset> 
</
html> 
Una vez completada esta tarea, crearemos la página de interaccion con el usuario llamada usuario.php, en la que se conectará y enviara sus mensajes:

usuario.php
Código PHP:
<? 
include 'conexion.php'; 
if(
ereg("^[a-zA-Z0-9_]{4,12}$",$nombre)){ 
   
$provar = mysql_result(mysql_query("SELECT nombre FROM c_usuarios WHERE nombre = '$nombre'",$db),0); 
   if(
$provar == ''){ 
      
$random = rand(100000,999999); 
      
mysql_query("INSERT INTO c_usuarios (nombre,cookie,time) VALUES ('$nombre','$random',".time().")",$db); 
      
setcookie ("ident","$random"); 
      
mysql_query("INSERT INTO c_mensajes (texto,id,color) VALUES ('El usuario $nombre acaba de conectarse',".time().",'#FF0000')",$db); 
      
$ident = $random;      
   } 
} 
?><html> 
<body topmargin="0" leftmargin="0"> 
<? 
if($ident != ''){ 
   
$usuario = mysql_result(mysql_query("SELECT nombre FROM c_usuarios WHERE cookie = $ident",$db),0); 
} 
if(
$usuario != ''){ 
   if(
$mensaje != ''){ 
       
$mensaje = str_replace("'","\"",$mensaje); 
       
$mensaje = str_replace('&','&amp;',$mensaje); 
       
$mensaje = str_replace('<','&lt;',$mensaje); 
       
mysql_query("INSERT INTO c_mensajes (texto,id,color) VALUES ('<b>$usuario</b> - $mensaje',".time().",'#000000')",$db); 
   } 
?><form method="POST" action="?pagina=usuario" onsubmit="enviando = 1"> 
  <script>enviando = 0</script><p align="center">Escribe un mensaje para enviar<br> 
<input type="text" name="mensaje" size="49" onkeydown="if(enviando == 1)alert('Se esta enviando tu anterior mensaje')"><input type="submit" value="Enviar" name="B1"></p> 
</form><? 
} 
else { 
?><form method="POST" action="?pagina=usuario"> 
  <p align="center"><? 
   
if($nombre == '')echo 'Escribe un nombre de usuario para conectar'; 
   else echo 
'<font color="#FF0000">El nombre no sirve o ya esta ocupado</font>'; 
?><br> 
<input type="text" name="nombre" size="49" value="<? echo $nombre; ?>"><input type="submit" value="Enviar" name="B1"></p> 
</form><? 
} 
?> 
<script>document.forms[0][0].focus()</script></body> 
</html>
Esta página se encarga de la conexion del usuario y de mandar los mensajes, es la página que hay que mejorar añadiendo por ejemplo emoticonos.

Y finalmente haremos el ultimo archivo, llamado script.php:

script.php
Código PHP:
<script><? 
include 'conexion.php'; 
function 
mensaje($texto,$color){ 
   echo 
"top.frames[\"mensajes\"].document.writeln('<font color=\"$color\">$texto</font><br>'); 
top.frames[\"mensajes\"].document.body.scrollTop = 1000000000; 
"
; 
} 
$borra ="SELECT * FROM c_usuarios WHERE time < ".(time()-30); 
$borra=mysql_query($borra,$db); 
while (
$borrado=mysql_fetch_array($borra))mysql_query("INSERT INTO c_mensajes (texto,id,color) VALUES ('El usuario ".$borrado["nombre"]." ha sido desconectado',".time().",'#FF0000')",$db); 
mysql_query("DELETE FROM c_usuarios WHERE time < ".(time()-30),$db); 
mysql_query("DELETE FROM c_mensajes WHERE id < ".(time()-30),$db); 
if(
$ident != ''){ 
   
$usuario = mysql_result(mysql_query("SELECT nombre FROM c_usuarios WHERE cookie = $ident",$db),0); 
} 
if(
$usuario != ''){ 
   if(
$id == ''){ 
      
mensaje("Conectado al chat cómo: $usuario","#FF0000"); 
   } 
   else { 
        
mysql_query("UPDATE c_usuarios SET time = ".time()." WHERE cookie = '$ident'",$db); 
       
$mensajes="SELECT * FROM c_mensajes WHERE id > ".$id." AND id < ".time()." ORDER BY id"; 
       
$mensajes=mysql_query($mensajes,$db); 
       while (
$row=mysql_fetch_array($mensajes))mensaje($row["texto"],$row["color"]); 
   } 
   echo 
"setTimeout(\"document.location = '?pagina=script&id=".(time()-1)."'\",1000); 
"
; 
} 
else { 
   echo 
"location.reload()"; 
} 
?></script>
Subiremos los archivos a un directorio de nuestra web y ya podreis empezar a usarlo.