You are on page 1of 17

[APORTE]Crear un chat con php+ajax, (con salas y muestra los usuarios online) Hola, Hice muchos foros con

ajax y php, y este es el mejor que e echo. Tiene:


Lista de usuario conectado en la sala. Distintas salas Configuraciones BBcodes Echo en AJAX

Este es la base que hice, que de este cree mejores. No tiene mucha seguridad. Y es libre de uso. chat.php Cdigo PHP:
<?php /////////////////////////////////////////////////////////////////// // CREADO POR PATO12 DE FOROSDELWEB.COM // WWW.HALFMUSIC.COM.AR /////////////////////////////////////////////////////////////////// if($_POST){ $sala="General"; include('config.php'); $user=addslashes($_POST['nick']); $n=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$user." '")); if($n==0){ $campos=array('time','user','sala'); $datos=array( (time())+$seg_inac,$user,$sala); $c=implode(',',$campos); $d='\''.implode("','",$datos).'\''; $sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d); $query = mysql_query($sSQL); }else{ $key=""; for($i=0;$i<=10;$i++) $key.=rand(0,9); $user=$user."(".$key.")"; $nn=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$user. "'")); if($nn==0){ $campos=array('time','user','sala'); $datos=array( (time())+$seg_inac,$user,$sala); $c=implode(',',$campos); $d='\''.implode("','",$datos).'\''; $sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d); $query = mysql_query($sSQL); }else{ die("El nick ya existe."); } } ?>

<script type="text/javascript"> <!-var segundos=3; var user="<?=stripslashes($user)?>"; var sala="general"; var acSegMill=(segundos==0 || segundos>10)? 1000 : segundos*1000; --> </script> <script type="text/javascript" src="chat.js"></script> <style type="text/css"> <!-#coment_tr { background-color: #FFFFFF; border-top-width: 2px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #666666; border-bottom-color: #666666; border-left-color: #000000; padding: 3px; height: 198px; width: auto; display: block; overflow: auto; } .date_envi { background-color: #EEEEEE; margin-top: 3px; margin-right: 3px; margin-bottom: 1px; margin-left: 3px; padding-top: 3px; padding-right: 3px; padding-bottom: 1px; padding-left: 3px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; } .botom { color: #000000; background-color: #FFFFFF; border: 1px solid #999999; height: 20px; width: 100px;

} .tabs { background-color: #FFFFFF; float: left; height: auto; width: 98px; display: block; cursor: pointer; text-align: center; padding-bottom: 4px; margin-bottom: 4px; } .tabs_ac { background-color: #E4E5E5; float: left; height: auto; width: 98px; display: block; cursor: pointer; text-align: center; text-decoration: underline; background-position: top; margin-bottom: 4px; padding-bottom: 4px; } #mensaje { background-color: #FFFFFF; padding: 5px; border: 1px solid #000000; } #config { color: #000000; background-color: #EEEEEE; margin: 1px; padding: 1px; height: auto; width: 100px; border: 1px solid #000000; position: relative; visibility: hidden; } .sala { color: #000000; background-color: #EEEEEE; height: auto; width: auto; cursor: pointer; display: block; margin-right: 2px; padding-right: 3px; text-align: center; margin-bottom: 2px; padding-top: 2px; padding-bottom: 2px; } .sala_ac { color: #000000;

background-color: #F3F3F3; height: auto; width: auto; cursor: pointer; display: block; margin-right: 2px; padding-right: 3px; text-align: center; margin-bottom: 2px; padding-top: 2px; padding-bottom: 2px; font-weight: bold; } .table { border: 1px solid #000000; } #usuarios { overflow: auto; height: 270px; width: auto; } .cargando { background-color: #FF0000; height: auto; width: 100px; position: absolute; left: 0px; top: 0px; clip: rect(0px,auto,auto,0px); visibility: visible; padding-right: 3px; padding-top: 2px; padding-bottom: 4px; padding-left: 5px; } #bbcode { position:relative; border: thin solid #333333; background-color: #EEEEEE; visibility: hidden; margin: 1px; padding: 1px; height: auto; width: 100px; } --> </style> <div class="cargando" id="cargando"><strong>Cargando...</strong></div> <div id="box" style="visibility:hidden;"> <table width="904" id="chat-trct" border="0" align="center" cellpadding="0" cellspacing="0" class="tabl e"> <tr> <td width="702" height="198" valign="top"><div id="coment_tr">&nbsp;P resione conectar para entrar al chat. </div></td> <td width="200" rowspan="2" valign="top"> <table border="0" cellpadding="0" cellspacing="0">

<tr> <td> <div class="tabs_ac" id="users">Usuarios</div> <div class="tabs" id="salas">Salas</div> </td> </tr> <tr> <td> <div id="usuarios" style="display:block;"></div> <div id="sala" style="visibility:; display:none; overflow:auto; height:27 0px;"> <div class="sala_ac" sala="General">General</div> <div class="sala" sala="Entretenimiento">Entretenimiento</div> <div class="sala" sala="Cine">Cine</div> <div class="sala" sala="Chistes">Chistes</div> <div class="sala" sala="Otros">Otros</div> </div> </td> </tr> </table> </td> </tr> <tr> <td bgcolor="#CCCCCC" class="date_envi"><div align="center"> <textarea name="mensaje" tabindex="1" rows="4" disabled="disabled" id="mensaje" style="width:694px;" onkeypress="return envAUT(event);"></t extarea><br /> <input name="enviar" onClick="enviarGET($('mensaje'));" type="butto n" class="botom" id="enviar" value="Enviar" disabled="disabled"> <input name="icono" type="button" class="botom" onClick="verGET('b bcode');" id="icono" value="BBcode"> <input name="conf" type="button" class="botom" onClick="verGET('co nfig');" id="conf" value="Configurar"> <input name="conection" onClick="conectarGET(this);" type="button" class="botom" id="conection" value="Conectar"> <br /> <font id="nik"><strong>Nick: </strong></font> | <strong>Sala: </strong> < font id="salaET"><?=$sala?></font><div id="result"></div> </div></td> </tr> </table> <div style="position:absolute; left:81px; top:276px;"> <div id="config"><div style="background-color:#CCCCCC">Configurar</div> Actualizar cada: <br /> <select name="seg_act" onchange="actualizarTime(this.value);"> <option value="1">1 segundo</option> <option value="2">2 segundo</option> <option value="3">3 segundo</option> <option value="4">4 segundo</option> <option value="5">5 segundo</option> <option value="6">6 segundo</option> <option value="7">7 segundo</option> <option value="8">8 segundo</option> <option value="9">9 segundo</option> </select>

<br /> <input name="cerrar-c" type="button" class="botom" id="cerrarc" onclick="cerrarGET('config');" value=" - Cerrar -" /> </div> </div> <div style="position:absolute; left:81px; top:8px;"> <div align="center" id="bbcode"> <div style="background-color:#CCCCCC;">BBcode</div> <div id="menu-td-edit"> <a href="javascript:b();"><strong>B</strong></a> <a href="javascript:it();"><i>I</i></a> <a href="javascript:u();"><u>U</u></a> <br /> <a href="javascript:colo();">Color</a> <a href="javascript:imagen();">Imagen</a> <a href="javascript:escribir_web();">URL</a> </div> <input name="cerrar" type="button" class="botom" id="cerrar" onclick= "cerrarGET('bbcode');" value=" - Cerrar -" /> </div> </div> </div> <?php }else{ ?> <form name="form1" method="post" action=""> Tu nick: <br> <input name="nick" type="text" id="nick"> <br> <input type="submit" name="Submit" value="Entrar al chat"> </form> <?php } ?>

Respuesta: [APORTE]Crear un chat con php+ajax, (con salas y muestra los usuarios onli chat.js Cdigo HTML:
function actualizarTime(time){ acSegMill=((time)*1000); alert("Se actualizara cada "+(time)+" segundos."); } function $(id){ return document.getElementById(id); } function replace_s(texto,s1,s2){ return texto.split(s1).join(s2); } function addEvent(obj, evType, fn, useCapture){ if (obj.addEventListener){ obj.addEventListener(evType, fn, useCapture); } else if (obj.attachEvent){

obj[fn+evType]=fn; obj[fn+evType+'n']=function(){obj[fn+evType](window.event);} obj.attachEvent("on"+evType, obj[fn+evType+'n']); } else { obj['on'+evType]=fn; } } function removeEvent(obj, evType, fn, useCapture){ if (obj.removeEventListener){ obj.removeEventListener(evType, fn, useCapture); } else if (obj.detachEvent){ obj.detachEvent("on"+evType, obj[fn+evType+'n']); obj[fn+evType+'n']=null; } else { obj['on'+evType]=function(){}; } } function stopEvent(e) { if (!e) e = window.event; if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } } function cancelEvent(e) { if (!e) e = window.event; if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } }

function getNextHighestDepth(){ var tCol=document.getElementsByTagName('*'); var z=0; for(var i=0;i<tCol.length;i++){ if(tCol[i].style.zIndex>z){ z=tCol[i].style.zIndex; } } return ++z; } arrastrable={}; function mover(e){ arrastrable.c2x=e.clientX; arrastrable.c2y=e.clientY; this.style.left=arrastrable.c2x-arrastrable.c1x+arrastrable.o1x+'px'; this.style.top=arrastrable.c2y-arrastrable.c1y+arrastrable.o1y+'px';

cancelEvent(e); stopEvent(e); } function detener(){ removeEvent(this, 'mousemove', mover, false); removeEvent(this, 'mouseup', detener, false); } function i(e){ if(this.position!="relative"||!this.style.position){ this.style.position="relative"; this.style.cssFloat="none"; this.style.zIndex=getNextHighestDepth(); } arrastrable.c1x=e.clientX; arrastrable.c1y=e.clientY; arrastrable.o1x=!isNaN(parseInt(this.style.left))?parseInt(this.style.lef t):0; arrastrable.o1y=!isNaN(parseInt(this.style.top))?parseInt(this.style.top) :0; addEvent(this, 'mousemove',mover, false); addEvent(this, 'mouseup',detener, false); addEvent(this, 'mouseout',detener, false); cancelEvent(e); stopEvent(e); } function makeDraggable(){ for(var j=0;j<arguments.length;j++){ $(arguments[j]).style.cursor='move'; addEvent($(arguments[j]), 'mousedown',i, false); } } navHover = function() { var lis = document.getElementById("menuh").getElementsByTagName("LI"); for (var i=0; i<lis.length; i++) { lis[i].onmouseover=function() { this.className+=" iehover"; } lis[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" iehover\\b"), ""); } } } function set_opacity(div, val) { if (typeof div.filters!='undefined') { val *= 100; try { div.filters.item("DXImageTransform.Microsoft.Alpha").opacity = val; } catch (e) {

div.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+val+')'; } } else { div.style.opacity = val; div.style.MozOpacity = val; } } var transicion=function(inicio,fin,segundos){ var _this=this; this.test=0; if(_this.intervalo)clearInterval(_this.intervalo); if(this.val && Math.abs(fin-_this.val)<0.01)return; this.val=!this.val?inicio<1?inicio+.0001:inicio:this.val; set_opacity(this, this.val); this.pasos=(fin-inicio)/100; this.pausa=segundos*10; this.intervalo=setInterval( function(){ if(_this.test>99 || Math.abs(fin-_this.val)<0.01){ clearInterval(_this.intervalo); } _this.test++; _this.val=_this.val+_this.pasos; if(_this.val<=.01) _this.style.visibility='hidden'; else _this.style.visibility='visible'; set_opacity(_this, _this.val); },this.pausa); } function verGET(e,t,c){ if(!c){ if(!t) t=1; var obj=document.getElementById(e); transicion.call(obj,0,1,t); obj.style.zIndex=getNextHighestDepth(); }else{ $(e).style.visibility='visible'; } } function cerrarGET(e,t,c){ if(!c){ if(!t) t=1; var obj=document.getElementById(e); transicion.call(obj,1,0,t); }else{ $(e).style.visibility='hidden'; } } function getXMLHttpRequest(){ var aVersions = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp","Microsoft.XMLHttp" ]; if (window.XMLHttpRequest){ // para IE7, Mozilla, Safari, etc: que usen el objeto nativo return new XMLHttpRequest(); }else if (window.ActiveXObject){ // de lo contrario utilizar el control ActiveX para IE5.x y IE6.x for (var i = 0; i < aVersions.length; i++) { try { var oXmlHttp = new ActiveXObject(aVersions[i]); return oXmlHttp; }catch (error) { //no necesitamos hacer nada especial } } } } function ir(url,par,d,p,t,c,cc,ccc,f,call,ft){ var ajax = getXMLHttpRequest(); ajax.open(p,url,true); ajax.setRequestHeader("Content-Type","application/x-www-formurlencoded; charset=UTF-8"); ajax.onreadystatechange = respuesta; ajax.send(par); function respuesta(){ if (ajax.readyState==4){ if (ajax.status==200){ if(!ft) document.getElementById(d).innerHTML=ajax.responseText; verGET(d); if(f) call; if(cc) cerrarGET(ccc); } }else{ if(t) document.getElementById(d).innerHTML=c; } } } function actualizarList(){ location.href = "#ultimo"; $('mensaje').focus(); } function verificarPOST(){ verifict=setTimeout( function(){ ir('inter.php','r='+Math.random()+'&t=ver&sala='+sala,'coment_tr', 'POST',false,null,null,null,true,actualizarList());

verificarPOST(); } ,acSegMill); } function verUsGET(){ verifict2=setTimeout( function(){ ir('inter.php','r='+Math.random()+'&t=user&sala='+sala+'&user='+us er,'usuarios','POST',false); verUsGET(); } ,acSegMill); } function conectarGET(_this){ if(_this.value=="Conectar"){ html('usuarios','<p>&nbsp;</p> <p>&nbsp;</p> <p align="center">Cargando...</p>'); $('mensaje').disabled = this.checked; $('enviar').disabled = this.checked; _this.value="Desconectar"; cerrarGET('coment_tr'); verGET('cargando',true); verGET('sala'); ir('inter.php','r='+Math.random()+'&t=ver&sala='+sala,'coment_tr', 'POST',false,null,true,'cargando',true,actualizarList()); verificarPOST(); verGET('cargando',true); ir('inter.php','r='+Math.random()+'&t=user&sala='+sala,'usuarios', 'POST',false,null,true,'cargando',true,verUsGET()); ir('inter.php','r='+Math.random()+'&t=conectar&name='+user+'&sala= '+sala,null,'POST',false,null,true,'cargando',false,null,true); }else{ $('mensaje').disabled = !this.checked; $('enviar').disabled = !this.checked; ir('inter.php','r='+Math.random()+'&t=desconectar&user='+user,null ,'POST',false,null,true,'cargando',false,null,true); _this.value="Conectar"; document.getElementById('coment_tr').innerHTML='<strong>[Desconect ado]</strong> OFF'; cerrarGET('cargando'); cerrarGET('usuarios'); cerrarGET('sala'); verGET('coment_tr'); clearTimeout(verifict); clearTimeout(verifict2); } } function enviarGET(_this){ text=_this.value;

if(replace_s(text,' ','')!=""){ _this.value=''; ir('inter.php','r='+Math.random()+'&t=insert&name='+user+'&cont='+ text+'&sala='+sala,null,'POST',false,null,true,'cargando',false,null }else{ alert('Escriba algo.'); } } // CONTINUA EL CODIGO

chat.js (continuacin) Cdigo HTML:


flag=0; function addTex(let){ var forms="mensaje"; var story = $(forms).value; if(let=="BACK"){ story=story.substring(0, story.length-1); $(forms).value=story; $(forms).focus(); }else if(flag==1){ story+=let.toUpperCase(); flag=0; $(forms).value=story; $(forms).focus(); }else{ story+=let; flag=0; $(forms).value=story; $(forms).focus(); } } function capIt(){ flag=1; } // BBcodes function escribir_web(){ title = prompt('Titulo:',""); if(title!=null){ web = prompt('Direcion web:',"http://"); if(web=="http://" || web==null){ alert('No as escrito una direccion valida.'); }else{ addTex('[url='+web+']'+title+'[/url]'); } } } function b(){ texto = prompt('Texto en negritas:',""); if(texto==null || texto==""){ alert("Nada"); } else{ addTex('[b]'+texto+'[/b]');

} } function it(){ texto = prompt('Texto:',""); if(texto==null || texto==""){ alert("Nada"); } else{ addTex('[i]'+texto+'[/i]'); } } function u(){ texto = prompt('Texto subrayado:',""); if(texto==null || texto==""){ alert("Nada"); } else{ addTex('[u]'+texto+'[/u]'); } } function imagen(){ image = prompt('Direcion de la imagen:',"http://"); if(image==null || image==""){ alert("Nada"); } else{ addTex('[img]'+image+'[/img]'); } } function colo(){ texto = prompt('Texto:',""); if(texto==null || texto==""){ alert("Nada"); } else{ color = prompt('Color: (Ej.: red,blue o puede ser html)',""); if(color==null || color==""){ }else{ addTex('[color='+color+']'+texto+'[/color]'); } } } ///////////////////////////////////////////////// function html(d,t){ $(d).innerHTML=t; } function restartClass(){ var lis = document.getElementById("sala").getElementsByTagName("div"); for (i=0; i<lis.length; i++) { lis[i].className = "sala"; } } function selecSala(){ var lis = document.getElementById("sala").getElementsByTagName("div"); for (i=0; i<lis.length; i++) {

lis[i].onclick=function() { restartClass(); this.className="sala_ac"; sala=this.getAttribute('sala'); verGET('cargando'); ir('inter.php','r='+Math.random()+'&t=ver&sala='+sala,'coment_tr', 'POST',false,null,true,'cargando',true,actualizarList()); ir('inter.php','r='+Math.random()+'&t=user&sala='+sala,'usuarios', 'POST',false,null,true,'cargando'); ir('inter.php','r='+Math.random()+'&t=conectar&name='+user+'&sala= '+sala,null,'POST',false,null,true,'cargando',false,null,true); html('salaET',sala); } } } function envAUT(e) { tecla = (document.all) ? e.keyCode :e.which; if(tecla==13 && !e.shiftKey){ enviarGET($('mensaje')); return false; } return true; } function verSalGET(){ $('users').className="tabs"; $('salas').className="tabs_ac"; $('sala').style.display="block"; $('usuarios').style.display="none"; } function verUGET(){ $('users').className="tabs_ac"; $('salas').className="tabs"; $('usuarios').style.display="block"; $('sala').style.display="none"; } window.onload=function(){ makeDraggable('bbcode'); makeDraggable('config'); $('mensaje').disabled = !this.checked; $('enviar').disabled = !this.checked; $('nik').innerHTML=" <strong>Nick: </strong>"+user; addEvent($('users'),'click',verUGET,false); addEvent($('salas'),'click',verSalGET,false); selecSala(); verGET('box'); cerrarGET('cargando'); }

config.php Cdigo PHP:


<?php $seg_inac=50;// Segundos que si el usuario no hace nada, se lo considera

incativo $bd_servidor = "localhost"; $bd_usuario = "root"; $bd_contrasenya = "clave"; $bd_bdname = "BD"; $con = @mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya); $bd_conect=@mysql_select_db($bd_bdname,$con); if(!$con || !$bd_conect){ exit('Servidor no disponible, disculpe las molestias.'); } ?>

Tablas: Cdigo:
CREATE TABLE `contenido` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `cont` longtext NOT NULL, `fecha` varchar(100) NOT NULL, `sala` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=136 ; CREATE TABLE `online` ( `id` int(10) NOT NULL AUTO_INCREMENT, `time` varchar(100) NOT NULL, `user` varchar(100) NOT NULL, `sala` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=173 ;

Continua... Respuesta: [APORTE]Crear un chat con php+ajax, (con salas y muestra los usuarios onli inter.php Cdigo PHP:
<?php include('config.php');// Incluimos las configuraciones if($_POST){ if($_POST['t']=="user"){ $user=array(); $in=0; $ac=0; $Sqll = mysql_query("SELECT * FROM online WHERE sala='".$_POST['sala']."' ",$con) or die(mysql_error()); while($dat= mysql_fetch_array($Sqll)){ $use=stripslashes($dat['user']); $time=$dat['time']; if(abs(time()-$time)<(200+$seg_inac)){ if($time>time()){ $ac++; $user[]='<strong>'.$use.'</strong>';

}else{ $in++; $user[]='<i>'.$use.'</i>'; } }else{ if($use!=$_POST['user']){ $consulta = "DELETE FROM online WHERE id ='".$dat['id']."'"; $resultado = mysql_query($consulta) or die(mysql_error()); } } } if(empty($user)) echo "No hay usuarios conectados."; else{ $user[]="<hr />Hay ".$ac." usuarios activos y ".$in." inactivos.(".($ac+$ in).")"; echo implode('<br />',$user); } }elseif($_POST['t']=="conectar"){ $name=$_POST['name']; $sala=$_POST['sala']; $n=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$name." '")); if($n==0){ $campos=array('time','user','sala'); $datos=array( (time())+$seg_inac,$name,$sala); $c=implode(',',$campos); $d='\''.implode("','",$datos).'\''; $sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d); $query = mysql_query($sSQL); }elseif($n==1){ $consulta = "Update online set time='".(time()+$seg_inac)."', sala='".$sa la."' WHERE user ='".$name."'"; @$resultado = mysql_query($consulta) or die(mysql_error()); } }elseif($_POST['t']=="desconectar"){ $consulta = "DELETE FROM online WHERE user ='".$_POST['user']."'"; $resultado = mysql_query($consulta) or die(mysql_error()); }elseif($_POST['t']=="ver"){ $post=array(); $Sqll = @mysql_query("SELECT * FROM contenido WHERE sala='".$_POST['sala' ]."' ORDER BY id ASC",$con) or die(mysql_error()); while($dat= mysql_fetch_array($Sqll)){ $mensaje=stripslashes($dat['cont']); $mensaje = str_replace("[b]","<b>",$mensaje) ; $mensaje = str_replace("[/ b]","</b>",$mensaje) ; $mensaje = str_replace("[img]","<img src=\"",$mensaje) ; $mensaje = str_r eplace("[/img]","\" border=\"0\" onerror=this.onerror='this.src=\'\';'>", $mensaje) ; $mensaje = preg_replace("/\[color=((#)?[0-9az]+)\]/i","<font color=\"\\1\">",$mensaje) ; $mensaje = str_replace("[/co lor]","</font>",$mensaje) ; $mensaje = preg_replace("/\[color=((#)?[0-9az]+)\]/i","<font color=\"\\1\">",$mensaje) ; $mensaje = str_replace("[/co lor]","</font>",$mensaje) ; $mensaje = preg_replace("/\[url\](www\..+)\[\/url\]/i","<a href=\"http://

\\1\" target=\"_blank\">\\1</a>",$mensaje) ; $mensaje = preg_replace("/\[url\](.+)\[\/url\]/i","<a href=\"\\1\" target =\"_blank\">\\1</a>",$mensaje) ; $mensaje = preg_replace("/\[url=(www\..+)\](.+)\[\/url\]/i","<a href=\"ht tp://\\1\" target=\"_blank\">\\2</a>",$mensaje) ; $mensaje = preg_replace("/\[url=(.+)\](.+)\[\/url\]/i","<a href=\"\\1\" t arget=\"_blank\">\\2</a>",$mensaje) ; $mensaje = str_replace("[i]","<i>",$mensaje) ; $mensaje = str_replace("[/ i]","</i>",$mensaje) ; $mensaje = str_replace("[u]","<u>",$mensaje) ; $mensaje = str_replace("[/ u]","</u>",$mensaje) ; $post[]='<strong>'.$dat['name'].':</strong> '.$mensaje; } if(!empty($post)) echo implode('<br>',$post); else echo "No hay comentarios."; echo '<div id="ultimo"></div>'; }elseif($_POST['t']=="insert"){ $name=$_POST['name']; $fecha=@date('d-m-Y'); $sala=$_POST['sala']; $cont=nl2br(addslashes(strip_tags($_POST['cont']))); $campos=array('name','fecha','cont','sala'); $datos=array( $name, $fecha ,$cont, $sala); $c=implode(',',$campos); $d='\''.implode("','",$datos).'\''; $sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","contenido",$c,$d); $query = mysql_query($sSQL); $n=mysql_num_rows(mysql_query("SELECT * FROM online WHERE user='".$name." '")); if($n==0){ $campos=array('time','user','sala'); $datos=array( (time())+$seg_inac,$name,$sala); $c=implode(',',$campos); $d='\''.implode("','",$datos).'\''; $sSQL=sprintf("INSERT INTO %s (%s) VALUES (%s)","online",$c,$d); $query = mysql_query($sSQL); }elseif($n==1){ $consulta = "Update online set time='".(time()+$seg_inac)."', sala='".$_P OST['sala']."' WHERE user ='".$name."'"; @$resultado = mysql_query($consulta) or die(mysql_error()); } } } ?>

http://www.forosdelweb.com/f77/aporte-crear-chat-con-php-ajax-con-salas-muestra-usuariosonline-651920/