Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/10/2003, 03:42
PHP-Ref
 
Fecha de Ingreso: junio-2003
Mensajes: 31
Antigüedad: 21 años, 5 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 marcospero 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.