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('&','&',$mensaje);
$mensaje = str_replace('<','<',$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.