Foros del Web » Programando para Internet » PHP »

Minichat

Estas en el tema de Minichat en el foro de PHP en Foros del Web. Buenas, ando intentando modificar un shout que encontré dando vueltas metiéndole código para que quede realmente como me gusta. El shout no utiliza una db ...
  #1 (permalink)  
Antiguo 16/07/2010, 20:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Minichat

Buenas, ando intentando modificar un shout que encontré dando vueltas metiéndole código para que quede realmente como me gusta.
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',
'' => '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'
) ;
# --> 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.
  #2 (permalink)  
Antiguo 16/07/2010, 20:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Minichat

necesitas aprender HTML...
Código PHP:
<strong><?php echo $nick?></strong>: <?php echo $mensaje?>
lee alguna referencia:
http://w3schools.com
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/07/2010, 02:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Minichat

Comprendo, con HTML me manejo mejor, así por ejemplo cambio el color también:

Código PHP:
 <FONT COLOR=#00FFFF><strong><?php echo $nick?></strong>:</FONT> <?php echo $mensaje?>
Gracias por la ayuda.

Por cierto, la hora de los mensajes escritos sale atrasada cuatro horas, ¿puedo ajustarla?

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.