Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2008, 09:13
Avatar de ZiTAL
ZiTAL
 
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 9 meses
Puntos: 62
ZiTALK AJAX Chat version 2.2 Beta litle

Hola a todos, ya tengo una version del chat programado en xHTML/CSS/PHP/Javascript.

Nuevas caracteristicas:

- Añadido campo nombre.
- Añadido sonido al registrarse nuevos mensajes.
- El nombre se guarda en una cookie para que al volver a ingresar en el chat se mantenga.

Arreglos:

- Repeticiones de los mensajes.

Licencia: LGPL http://www.gnu.org/licenses/lgpl.html

Codigo:

index.php
Código PHP:
<?php
function Connect($host,$user,$passwd,$db)
 {  
  if(!(
$link=mysql_connect($host,$user,$passwd)))
   {
    echo 
"Error connecting to DDBB.";
    exit();
   }
  if(!
mysql_select_db($db,$link))
   {
    echo 
"Error in DDBB selection.";
    exit();
   }
   return 
$link;
 }
function 
maxId()
 {
     
$select="select max(id) from chat";
     
$select=mysql_query($select);
     return 
mysql_result($select,0,0);
     @
mysql_free_result($select);     
 } 
$link=Connect("host","usuario","password","DB_name");
// sending comments
if($_GET["Write"]=="yes")
 {
  
$max=maxId()+1;
  
$date=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
  
$name=htmlentities(utf8_decode($_REQUEST["name"]));
  
$comment=htmlentities(utf8_decode($_REQUEST["comment"]));
  
//
  
$insert="insert into chat values(".$max.",'".$name."','".$comment."',".$date.")";
  if(
trim($_REQUEST["name"])!=NULL && trim($_REQUEST["comment"])!=NULL)
   {
    
$insert=mysql_query($insert);
   }
  
mysql_close($link);
  exit();
 } 
// reading comments
elseif($_GET["Read"]=="yes")
 {
  
header("Cache-Control: no-store, no-cache, must-revalidate");
  
$max=maxId();
  if(
$max<50)
   {
    
$max=0;
   }
  else
   {
    
$max=$max-50;
   }
  
$select="select id,nombre,comentario,data from chat order by id asc limit ".$max.",50";
  
$select=mysql_query($select);
  while(
$row = @mysql_fetch_array($select))
   {
    if(
$row["id"]!=NULL)
     {
         
$date=date("Y/m/d - H:i:s",$row["data"]);
        echo 
"<span id=".$row["id"]."><strong>".$date." - ".utf8_encode($row["nombre"]).":</strong> ".utf8_encode($row["comentario"])."</span><br />";
     }
   }
  @
mysql_free_result($select);
  
mysql_close($link);
  exit();
 }
// reading last comments
elseif($_GET["ReadLast"]=="yes" && $_GET["id"]!=NULL)
 {
  
header("Cache-Control: no-store, no-cache, must-revalidate");
  
$id=$_GET["id"];
  
$max=maxId();
  
//
  
$limit1=$id;
  
$limit2=$max-$id;
  
//
  
$select="select id,nombre,comentario,data from chat order by id asc limit ".$limit1.",".$limit2;
  
$select=mysql_query($select);
  while(
$row = @mysql_fetch_array($select))
   {
    if(
$row["id"]!=NULL)
     {
         
$date=date("Y/m/d - H:i:s",$row["data"]);
        echo 
"<span id=".$row["id"]."><strong>".$date." - ".utf8_encode($row["nombre"]).":</strong> ".utf8_encode($row["comentario"])."</span><br />";
     }
   }
  @
mysql_free_result($select);
  
mysql_close($link);
  exit();
 }
// get the last ID
elseif($_GET["MaxId"]=="yes" && $_GET["id"]!=NULL)
 {
     
header("Cache-Control: no-store, no-cache, must-revalidate");
     
$id=$_GET["id"];
    
$max=maxId();
      echo 
$max;
      @
mysql_free_result($select);
      
mysql_close($link);
      exit();     
 }
elseif(
$_GET["SetCookie"]=="yes" && $_GET["name"]!=NULL)
 {
  
header("Cache-Control: no-store, no-cache, must-revalidate");
  
$domain="zital.no-ip.org";
  
$expire=time()+(86400*30); // 30 days
  
$name=htmlentities(utf8_decode($_GET["name"]));
  
setcookie('zitalk',$name,$expire,'/',$domain,0);
  exit();
 }
// Si hay cookie al coger foco por primera vez no se debe de borrar el campo ;)
if(trim($_COOKIE["zitalk"])!=NULL)
 {
  
$cookiename=$_COOKIE["zitalk"];
  
$firstname='false';
 }
else
 {
  
$cookiename="Nombre...";
  
$firstname='true';
 }
?>
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
	<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1;"/>
	<title>AJAX Chat</title>
	<style type="text/css">
	body
	 {
	 	background-color: #C0C0C0;
	 	color: #000000;
	 	font-size: 13px;
	 }
	input
	 {
	 	font-size: 12px;
	 }
	#chat 
	 {
	 	border: 1px solid #000000;
	 	background-color: #F0F0F0;
		height: 200px;
		width: 800px;
		overflow: auto;
		padding: 8px;
	 }
	</style>
	<script type="text/javascript" src="js/ajax.js"></script>
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/color.js"></script>
	<script type="text/javascript" src="js/soundmanager2.js"></script>
	<script type="text/javascript">
		// cada 2,5 segundos se verifican nuevas entradas en la bbdd
		setInterval("ajaxLasId()",1500);
		// activamos sonido
		soundManager.onload = function() {		
		soundManager.createSound('mySound','sound/bonk.mp3');
		}	
	</script>
</head>	 
<body>
<div>
<h1>ZiTALK Ajax Chat v2.2</h1>
        	<img src="img/loading.gif" style="display:none" alt="loading..."/>	
		<p>
			<input type="text" id="nombre" size="15" maxlength="15" value="<?php echo $cookiename; ?>" onkeydown="pulse(this,event)"/>
			<input type="text" id="comentario" size="100" maxlength="100" value="Comentario..." onkeydown="pulse(this,event)"/>
		</p>
</div>
<div id="chat">
</div>
<div>
<a href="http://www.forosdelweb.com/f77/zitalk-version-2-1-beta-litle-ajax-chat-545601/">Codigo fuente</a>
<br />
Licencia LGPL: <a href="http://www.gnu.org/licenses/lgpl.html">http://www.gnu.org/licenses/lgpl.html</a>
<br />
e-mail: zitalman[@]gmail.com
<br /><br />
<h2>Version 2.2</h2>
Features:
<ol>
	<li>A&ntilde;adido sonido al registrarse nuevos mensajes.</li>
	<li>A&ntilde;adido campo nombre.</li>
	<li>El nombre se guarda en una cookie para que al volver a ingresar en el chat se mantenga.</li>
	<li>Funciona en: firefox, konqueror, internet explorer, opera.</li>
</ol>
Bug fixes:
<ol>
	<li>Corregido reperici&oacute;n de los mensajes.</li>	
</ol>
<br />
<h2>Librerias externas usadas:</h2>
<ol>
	<li><a href="js/jquery.js">jquery v1.1</a> url: <a href="http://www.jquery.com">http://www.jquery.com</a> Solamente usada para animaciones.</li> 
	<li><a href="js/color.js">plugin color jquery.</a></li>
	<li><a href="js/soundmanager2.js">soundmanager2, sonido con flash</a> url: <a href="http://www.schillmania.com/projects/soundmanager2/">http://www.schillmania.com/projects/soundmanager2/</a></li>
</ol>
</div>
<script type="text/javascript">
	<?php
		echo "var firstname=".$firstname.";";
	?>
	ajaxRead();	
	document.getElementById("nombre").focus();		
</script>	
</body>
</html> 
sigue abajo que no entra el post ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan