Viewing file: minichat.php (10.78 KB) -rw-rw-r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<? #***************************** #*** MiniChat v1.5 *** #*** Creado por: Electros *** #*** Web: www.electros.net *** #*****************************
# * Se muestran todos los errores @error_reporting(E_ALL) ; $rand=rand(111111,999999); #********************* #*** Configuraci�n *** #********************* ?> <head>
<script> var miPopup function abreVentana(){ miPopup = window.open("caritas.html?rand=<?echo $rand;?>","miwin","width=300,height=150,scrollbars=yes") miPopup.focus() } </script> <body> <?
# Mensajes a mostrar (0 para mostrar todos) $mostrar = 100 ; # Maximo de caracteres por nick $max_nick = 20 ; # Maximo de caracteres por web $max_web = 50 ; # Maximo de caracteres por mensaje $max_mensaje = 250 ; # Maximo de caracteres por palabra (palabras muy grandes pueden descuadrar el dise�o y # ocasionar que el minichat no se vea correctamente), si no deseas esta opci�n pon 0. $max_palabra = 20 ; # �Mostrar caretos en los mensajes? (SI / NO) $caretos = 'SI' ; # �Mostrar fecha en los mensajes? (SI / NO) $fecha_mensajes = 'SI' ; # �Mostrar IP en los mensajes? (SI / NO) $ip_mensajes = 'NO' ; # Estilo (archivo que contiene el estilo del minichat, tipo de letra, tama�o, color, fondo, �tc.) $estilo = 'estilo.css' ; # �Activar filtro Anti-SPAM? (para evitar el env�o excesivo de direcciones webs, busca cualquier # direcci�n web contenida en el mensaje y mostrar� el aviso indicado) (SI / NO) $antispam = 'NO' ; # Aviso que se mostrar� cuando alguien realice SPAM (s�lo si el filtro Anti-SPAM est� activado) $antispam_aviso = '<i>SPAM</i>' ; # �Censurar palabras altisonantes? (SI / NO) $censura = 'NO' ; # Permitir c�digo HTML (se recomienda que est� desactivado) (SI / NO) $codigo = 'NO' ; # Altura de la tabla de mensajes (cuando los mensajes mostrados rebasan la altura marcada # aparece una barra de desplazamiento) $altura = 170 ; # �Mostrar enlace hacia la web del autor? (SI / NO) $publicidad = 'NO' ; date_default_timezone_set('Europe/Madrid');
INCLUDE "../conn.php"; include "../classes/class.log.php"; $control= new control();
$anonimo=true; if ($control->usuario<>"anonimo")$anonimo=false;
# *********************************** # *** Fin de configuraci�n b�sica *** # ***********************************
# Lo que sigue modificalo bajo tu propia responsabilidad.
# *** Caretos *** function caretos($texto) { # --> Inicio caretos $lista_caretos = array( ':-]' => 'alegre.gif', ':-)' => 'sonrisa.gif', ':P' => 'burla.gif', ':(1' => 'demonio.gif', ':?' => 'duda.gif', ';)' => 'guino.gif', ':lol' => 'lol.gif', ':|' => 'neutral.gif', ':-)' => 'sonrisa.gif', ':O' => 'sorprendido.gif', ':8' => 'asustado.gif', ':S' => 'confundido.gif', ':(2' => 'demonio2.gif', ':-(' => 'enojado.gif', ':\(' => 'llorar.gif', ':M' => 'moda.gif', ':)' => 'risa.gif', ':R' => 'sonrojado.gif', ':(' => 'triste.gif', ':clap:' =>'clap.gif' ) ; # --> Fin caretos foreach($lista_caretos as $a => $b) $texto = str_replace($a,'<img src="caretos/'.$b.'" alt="Careto" align="top">',$texto) ; return $texto ; }
# *** Palabras censuradas *** function censura($texto) { # --> Inicio palabras $lista_censura = array( 'insulto1' => '*****', 'insulto2' => '*****', 'insulto3' => '*****', chr(13) => ' ' ) ; # --> Fin palabras foreach($lista_censura as $a => $b) $texto = str_replace($a,$b,$texto) ; return $texto ; }
#******************************* #*** Fin de la configuraci�n *** #*******************************
# * Definir el nombre del archivo donde se guardar�n los mensajes define('m','minichat.txt') ;
# * Comprobar si existe el archivo y si se puede escribir en �l if(file_exists(m)) { if(!is_writable(m)) exit('El archivo <b>'.m.'</b> debe tener el permiso CHMOD 666.') ; } else { # Se intenta crear el archivo, si no se avisa al usuario if(!@fopen(m,'w')) exit('El directorio del MiniChat debe tener el permiso CHMOD 777.') ; }
# * Guardar mensaje if(isset($_POST['enviar'])) { function quitar_etiq($a) { $a = preg_replace('/<.*>/iU','',$a) ; return $a ; } function quitar($a) { $a = trim($a) ; $a = stripslashes($a) ; # Se elimina el separador de datos en caso de que alquien malintencionado lo inserte $a = str_replace('|','',$a) ; # Se elimina el caract�r especial ASCII 160 (es un espacio en blanco que no puede ser eliminado por trim()) # Se elimina el caract�r especial ASCII 13, $a = str_replace(chr(10),chr(13),$a) ; $a = htmlspecialchars($a) ; return $a ; } $crypt=new Encriptor; $nick = quitar(quitar_etiq($crypt->decrypt($_POST['nick']))) ; unset ($crypt); $web = quitar(quitar_etiq($_POST['web'])) ; $mensaje = quitar($_POST['mensaje']) ; // aqui montamos el acortador de URLS. if ($inicio=strpos($mensaje,"http")){ $final=strlen($mensaje); $mensaje.=" "; //buscamos un espacio despues de http $ccadena=""; for ($k=$inicio;$k<=$final;$k++){ $caracter=substr($mensaje,$k,1); //echo $caracter."-".ord($caracter)."<br>"; if ($caracter==" "){ //echo substr($mensaje,$inicio,$k-$inicio); $k=65535; }else{ $ccadena.=substr($mensaje,$k,1);
} } // seguimos dentro del if. Ahora que tenemos la cadena en $ccadena, la lanzamos contra el servicio: $ch = curl_init("lb.cm/shurly/api/shorten?longUrl=$ccadena&format=txt"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_GET, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // Y AHORA, SUSTITUIMOS LA URL POR LA GENERADA $mensaje=str_replace($ccadena,"<a href = '$output' > $output </a> ",$mensaje); }
# * Se comprueba que los datos no excedan las longitudes fijadas en la configuraci�n switch(true) { case strlen($nick) > $max_nick : $error = 'El nick no debe ser mayor de '.$max_nick.' caract�res.' ; break ; case strlen($web) > $max_web : $error = 'El email o web no debe ser mayor de '.$max_web.' caract�res.' ; break ; case strlen($mensaje) > $max_mensaje : $error = 'El mensaje no debe ser mayor de '.$max_mensaje.' caract�res.' ; break ; case !$nick || $nick == 'Tu nick' : $error = 'Debes escribir un nick.' ; break ; case !$mensaje || $mensaje == 'Tu mensaje' : $error = 'Debes escribir un mensaje.' ; break ; case $control->usuario=="anonimo" : $error = 'No permitido para usuarios an�nimos.' ; break ; default: if($web && $web != 'Email o web (opcional)') { if(eregi('^www.',$web)) $web = 'http://'.$web ; } else $web = false ; } if(isset($error)) exit($error) ; # * El formato de fecha local se aplica con "spanish" para que sea compatible con entornos UNIX y Windows setlocale(LC_TIME,'spanish') ; $fecha = strftime('%d %b %Y %H:%M',time()) ; $archivo = fopen(m,'a') ; fwrite($archivo,"$nick | $web | $mensaje | $fecha | $_SERVER[REMOTE_ADDR]\n") ; fclose($archivo) ; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>MiniChat v1.5</title> <link rel="stylesheet" type="text/css" href="<?=$estilo?>"> <base target="_blank"> </head> <body> <div style="width: 100%; height: <?=$altura?>px ; overflow-y: scroll; overflow-x: hidden;"> <? # * Mostrar los mensajes $mensajes = file(m) ; $total = count($mensajes) - 1 ; if(!$mostrar || $total < $mostrar) { $maximo = 0 ; } else { $maximo = $total - $mostrar ; } ?> <table width="100%" border="0" cellpadding="1" cellspacing="1"> <? for($i = $total ; $i >= $maximo ; $i--) { # Se obtienen todos los datos partiendo cada l�nea del archivo mediante el separador " | " list($nick,$web,$mensaje,$fecha,$ip) = explode(' | ',$mensajes[$i]) ; # Se aplican las funciones seg�n la configuraci�n if($codigo == 'SI') $mensaje = html_entity_decode($mensaje) ; if($censura == 'SI') { $nick = censura($nick) ; $web = censura($web) ; $mensaje = censura($mensaje) ; } if($antispam == 'SI') $mensaje = preg_replace('/(http:\/\/|www.)[^\s]+/i',$antispam_aviso,$mensaje) ; # Si el usuario escribi� un email o web, se crea el enlace correspondiente dentro del nick if(!$web) $nick = '<b><'.$nick.'></b>' ; else { if(eregi('^[0-9a-z_.-]+@[0-9a-z_.-]+[a-z]{2,3}$',$web)) $web = 'mailto:'.$web ; $nick = "<a href=\"$web\"><b><$nick></b></a>" ; } # Se cortan las palabras que excedan la longitud m�xima por palabra if(strlen($mensaje) > $max_palabra) { $palabras = explode(' ',$mensaje) ; $total_palabras = count($palabras) ; for($a = 0 ; $a < $total_palabras ; $a++) { if(strlen($palabras[$a]) > $max_palabra) $palabras[$a] = wordwrap($palabras[$a],$max_palabra,' ',1) ; } $mensaje = implode($palabras,' ') ; } if($caretos == 'SI') $mensaje = caretos($mensaje) ; $n = $i % 2 ? 1 : 2 ; ?> <tr> <td class="mensaje<?=$n?>"> <?=$nick.' '.$mensaje?> <? if($fecha_mensajes == 'SI') echo '<div class="fecha">'.$fecha.'</div>' ; if($ip_mensajes == 'SI') echo '<div class="ip">'.$ip.'</div>' ; ?> </td> </tr> <? } ?> </table> </div> <script type="text/javascript"> enviando = 0 ; function limpiar(campo) { if(campo.value == 'Tu nick') campo.value = '' ; if(campo.value == 'Email o web (opcional)') campo.value = '' ; if(campo.value == 'Tu mensaje') campo.value = '' ; } function validar() { if(formulario.nick.value == '' || formulario.nick.value == 'Tu nick') { alert('Debes escribir un nick') ; return false ; } if(formulario.mensaje.value == '' || formulario.mensaje.value == 'Tu mensaje') { alert('Debes escribir un mensaje') ; return false ; } if(enviando == 0) enviando++ ; else { alert('El mensaje se est� enviando') ; return false ; } } </script> <?if ($control->usuario!="anonimo"){ $crypt=new Encriptor; ?> <div align="center" valign="top "> <form name="formulario" method="post" action="minichat.php" target="_self" onsubmit="return validar()"> <input type="hidden" name="nick" size="15" maxlength="<?=$max_nick?>" value="<?ECHO $crypt->encrypt($control->usuario);unset ($crypt);?>" class="formulario"> <?if ($control->usuario=="darklooker"){?> <input type="hidden" name="web" size="22" maxlength="<?=$max_web?>" value="http://www.torrebunolives.net16.net " class="formulario"> <?}?> <TEXTAREA NAME="mensaje" ROWS=3 COLS=35 onfocus="limpiar(this)" class="formulario"></TEXTAREA>
<? /*<input type="text" name="mensaje" size="32 " maxlength="<?=$max_mensaje?>" value="Tu mensaje" onfocus="limpiar(this)"class="formulario"><br> */ ?> <br><input type="submit" name="enviar" value="Enviar" class="formulario"> <small><a onClick="abreVentana()" style="cursor:pointer;"><u>caritas</u></a></small>
</form> <? if($publicidad == 'SI') echo '<center><a href="http://www.electros.net">MiniChat v1.5</a></center>' ; ?> </div> <?} // fin de anonimo ?> </body> </html>
|