El shout no utiliza una db en mysql, si no que lleva un registro de lo ahí se escribe en un txt colocando Nick, mensaje, fecha e ip, no sé si lo conocerán ya. El caso el que quisiera saber cómo puedo hacer que salga el Nick en otro color y en negrita, ya que ando bastante pez en el tema php y por más que lo he intentado no lo consigo.
El código es este:
--------------------------------------------------------------------------------------------------------
<?
# * Se muestran todos los errores
@error_reporting(E_ALL) ;
#*********************
#*** Configuración ***
#*********************
# Mensajes a mostrar (0 para mostrar todos)
$mostrar = 30 ;
# Maximo de caracteres por nick
$max_nick = 20 ;
# Maximo de caracteres por web
$max_web = 50 ;
# Maximo de caracteres por mensaje
$max_mensaje = 260 ;
# 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 = 30 ;
# ¿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 = 'SI' ;
# 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 = 333 ;
# ***********************************
# *** Fin de configuración básica ***
# ***********************************
# Lo que sigue modificalo bajo tu propia responsabilidad.
# *** Caretos ***
function caretos($texto) {
# --> Inicio caretos
$lista_caretos = array(
':D' => 'alegre.gif',
':P' => 'burla.gif',
':(1' => 'demonio.gif',
':?' => 'duda.gif',
';)' => 'guino.gif',
':lol' => 'lol.gif',
':|' => 'neutral.gif',
'
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
':O' => 'sorprendido.gif',
':8' => 'asustado.gif',
':S' => 'confundido.gif',
':(2' => 'demonio2.gif',
'
![triste](http://static.forosdelweb.com/fdwtheme/images/smilies/frown.png)
':\'(' => 'llorar.gif',
':M' => 'moda.gif',
':)' => 'risa.gif',
':R' => 'sonrojado.gif',
':(' => 'triste.gif'
) ;
# --> Fin caretos
foreach($lista_caretos as $a => $b) $texto = str_replace($a,'<img src="caretos/'.$b.'" width="15" height="15" alt="Careto" align="top">',$texto) ;
return $texto ;
}
# *** Palabras censuradas ***
function censura($texto) {
# --> Inicio palabras
$lista_censura = array(
'insulto1' => '*****',
'insulto2' => '*****',
'insulto3' => '*****'
) ;
# --> 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())
$a = str_replace(chr(160),'',$a) ;
$a = htmlspecialchars($a) ;
return $a ;
}
$nick = quitar(quitar_etiq($_POST['nick'])) ;
$mensaje = quitar($_POST['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($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 ;
default:
}
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 | $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="height: <?=$altura?>px ; overflow: auto">
<?
# * 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,$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) ;
else {
}
# 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>
<div align="center">
<form name="formulario" method="post" action="minichat.php" target="_self" onsubmit="return validar()">
<input type="text" name="nick" size="15" maxlength="<?=$max_nick?>" value="Tu nick" onfocus="limpiar(this)" class="formulario"><br>
<br>
<input type="text" name="mensaje" size="22" maxlength="<?=$max_mensaje?>" value="Tu mensaje" onfocus="limpiar(this)" class="formulario"><br>
<input type="submit" name="enviar" value="Enviar" class="formulario">
</div>
</form>
</div>
</body>
</html>
--------------------------------------------------------------------------------------------------------
Y el de el css (Por si hace falta):
--------------------------------------------------------------------------------------------------------
@charset "iso-8859-1";
body,table {
font-family: Comic Sans MS ;
font-size: 8pt ;
color: #FF0000 ;
background: #000000 ;
margin: 0px ;
}
/*** Enlaces ***/
a {
color: #FF0000 ;
font-weight: bold ;
}
/*** Negrita ***/
b {
color: #FF4040 ;
}
/*** Fecha ***/
.fecha {
font-weight: bold ;
color: #333333 ;
text-align: right ;
}
/*** IP ***/
.ip {
font-weight: bold ;
color: #333333 ;
text-align: right ;
}
/*** Tabla de los mensajes ***/
.mensaje1 {
border: #000000 1px solid ;
background: #000000 ;
}
.mensaje2 {
border: #330000 1px solid ;
background: #330000 ;
}
/*** Formulario ***/
.formulario {
font-family: Comic Sans MS ;
font-size: 7pt ;
color: #00FF00 ;
border: #550000 1px solid ;
background: #000000 ;
text-align: center ;
}
--------------------------------------------------------------------------------------------------------
Si alguien puede ayudarme se lo agradecería.