Foros del Web » Programando para Internet » PHP »

ayuda con este foro, por favor!

Estas en el tema de ayuda con este foro, por favor! en el foro de PHP en Foros del Web. Hola, tengo un foro que trabaja sin base de datos, que para el poco movimiento que tiene me va muy bien, pero le he descubierto ...
  #1 (permalink)  
Antiguo 13/01/2007, 15:51
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
ayuda con este foro, por favor!

Hola, tengo un foro que trabaja sin base de datos, que para el poco movimiento que tiene me va muy bien, pero le he descubierto un fallo y no se como solucionarlo: resulta que cuando la gente escribe el mensaje y le da al intro, el mensaje se corta en ese sitio y ya no se publica más. He mirado en el archivo mensajes.txt e intuyo que tiene ese error porque funciona solo con texto seguido y al aparecer el salto de linea se corta el mensaje, ¿sabeis como podria solucionar esto por favor??? os dejo aqui un buen trozo del codigo de foro.php, que es donde me imagino que tendria q estar la solucion. gracias a todos de antemano!!!


function validarTags()
{
global $nombre;
global $asunto;
global $mensaje;
$nombre = htmlspecialchars(trim($nombre));
$nombre = str_replace("&","&",$nombre);
$nombre = preg_replace("/(1512)|(15)|(12)/","",$nombre);
$nombre = stripslashes(str_replace("<","",$nombre));
$nombre = strip_tags(str_replace(">","",$nombre));
$nombre = substr(strip_tags($nombre),0,20);
$asunto = htmlspecialchars(trim($asunto));
$asunto = str_replace("&","&",$asunto);
$asunto = preg_replace("/(1512)|(15)|(12)/","",$asunto);
$asunto = stripslashes(str_replace("<","",$asunto));
$asunto = strip_tags(str_replace(">","",$asunto));
$asunto = substr(strip_tags($asunto),0,50);
$mensaje = htmlspecialchars(trim($mensaje));
$mensaje = str_replace("&","&",$mensaje);
$mensaje = preg_replace("/(1512)|(15)|(12)/","<br>",$mensaje);
$mensaje = str_replace("<","",$mensaje);
$mensaje = str_replace(">","",$mensaje);
return;
}

function reemplazarTags()
{
global $mensaje1;
$mensaje1 = str_replace('', '<b>', $mensaje1);
$mensaje1 = str_replace('', '</b>', $mensaje1);
$mensaje1 = str_replace('', '<i>', $mensaje1);
$mensaje1 = str_replace('', '</i>', $mensaje1);
$mensaje1 = str_replace('', '<u>', $mensaje1);
$mensaje1 = str_replace('', '</u>', $mensaje1);
$mensaje1 = str_replace('[c]', "<font color='#004080'>", $mensaje1);
$mensaje1 = str_replace('[/c]', '</font>', $mensaje1);
$mensaje1 = str_replace ("[tk]", "<img src='imagenes/tk.gif' width='15' height='15'>", $mensaje1);
$mensaje1 = str_replace(":)", "<img src='imagenes/sonrisa.gif' >", $mensaje1);
$mensaje1 = str_replace(":e", "<img src='imagenes/icon_mad.gif' >", $mensaje1);
$mensaje1 = str_replace(":D", "<img src='imagenes/icon_confused.gif' >", $mensaje1);
$mensaje1 = str_replace(":a", "<img src='imagenes/icon_cool.gif' >", $mensaje1);
$mensaje1 = str_replace(":8", "<img src='imagenes/icon_eek.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":u", "<img src='imagenes/icon_surprised.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":x", "<img src='imagenes/icon_sunrise.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":k", "<img src='imagenes/icon_lol.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":w", "<img src='imagenes/icon_love.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":z", "<img src='imagenes/icon_wtf.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":s", "<img src='imagenes/icon_razz.gif' >", $mensaje1);
$mensaje1 = eregi_replace (":j", "<img src='imagenes/icon_wink.gif' >", $mensaje1);
$mensaje1 = str_replace (":r", "<img src='imagenes/icon_music.gif' >", $mensaje1);
return;
}

function escribirMensaje($posts, $postsID)
{
global $nueva_id;
$fp = fopen ($postsID, "rb");
$id = fgets($fp, 4096);
$nueva_id = $id + 1;
fclose($fp);
$fp = fopen ($postsID, "r+b");
flock ($fp,2);
fwrite($fp, $nueva_id);
flock ($fp,3);
fclose($fp);

$fp = fopen ($posts, "ab");
flock ($fp,2);
fwrite($fp, "\r\n");
flock ($fp,3);
fclose($fp);
return;
}

function eliminarMensaje($elArchivo, $elPost)
{
$i = 0;
$archivo1 = file($elArchivo);
$fp = fopen($elArchivo, "w");
for ($i = 0; $i <= sizeof($archivo1); $i++)
{
if (strstr($archivo1[$i], $elPost))
{
$archivo1[$i] = "";
}
fwrite($fp, $archivo1[$i]);
}
fclose($fp);
return;
}

// Contar temas y mensajes

$temas=0;
$mens=0;

$fp = fopen ($posts, "rb");
while (!feof ($fp))
{
$buff = fgets($fp, 4096);
if(substr($buff, 0, 12 )=="[nuevo_post]") {
$p=explode('|||^^^|||', "$buff");
if ($p[2]==0) {
$temas++;
$mens++;
}
else {
$mens++;
}
}
}
fclose($fp);

switch($a)
{

// Postear un nuevo mensaje

case "postnuevo":


// Reemplazar tags no deseados

validarTags();

// Escribir post en el archivo

if (!$nombre or !$asunto or !$mensaje) {
$nombre = "(Ninguno)";
$asunto = "(Ninguno)";
}
$fecha=date("d-m-y");
$fp = fopen ($posts, "ab");
flock ($fp,2);
fwrite($fp, "[nuevo_post]|||^^^|||$nueva_id|||^^^|||0|||^^^|||$nombre|||^^^ |||$asunto|||^^^|||$fecha|||^^^|||$mensaje|||^^^|| |");
flock ($fp,3);
fclose($fp);

echo "Muchas gracias. Tu mensaje ha sido agregado.<br><a href='index.php?ver_formulario=$verFormulario' target='_top'><< Volver atrás</a>";
}
break;


// Reemplazar tags...

validarTags();

$fecha=date("d-m-y");
$fp = fopen ($posts, "ab");
flock ($fp,2);
fwrite($fp, "[nuevo_post]|||^^^|||$nueva_id|||^^^|||$tid|||^^^|||$nombre||| ^^^|||$asunto|||^^^|||$fecha|||^^^|||$mensaje|||^^ ^|||");
flock($fp,3);
fclose($fp);

echo "Muchas gracias. Tu respuesta ha sido agregada.<br><a href='index.php?ver_formulario=$verFormulario&a=ve r_mensaje&tid=$tid' target='_top'><< Ver mensaje</a>";
}
break;


// En caso de ver un mensaje

case "ver_mensaje":

$ahora = date("d-m-y");
$zonahoraria = date("O");

echo "<table border='0' width='700'><tr><td align='left'><tr><td>$nForo<td align='right'>";
if ($usuario != $loginNombre || $password != $loginPass)
{
echo "<a href='index.php?ver_formulario=$verFormulario&a=lo gin&tid=$tid'>Admin</a> | ";
}
elseif ($usuario == $loginNombre && $password == $loginPass)
{
$verFormulario = "no";
}
echo "<a href='index.php?ver_formulario=$verFormulario' target='_top'>Volver al Foro</a></td></tr></table>
<table border='0' width='700' cellspacing='1' cellpadding='2' bgcolor='$borde_color'><tr bgcolor='$tabla_color' border='1' bordercolor='1' style='color:#24559F'>
<td width='100'><b>Autor</b><td width='450'><b>Mensaje</b></td></tr>";

$fp = fopen ($posts, "rb");

while(!feof ($fp))
{

$buffer = fgets($fp, 4096);
if (substr($buffer, 0, 12 )=="[nuevo_post]")
{
$p=explode('|||^^^|||', "$buffer");
if ($p[1]==$tid)
{
$asunto=$p[4];
$mensaje1 = nl2br($p[6]);

if ($usuario == $loginNombre && $password == $loginPass)
{
$eliminar = "[ <a href='index.php?ver_formulario=$verFormulario&a=el iminar&usuario=$usuario&password=$password&tid=$ti d&p1=$p[1]&p2=$p[2]&p3=$p[3]&p4=$p[4]'>Eliminar</a> ]";
}

reemplazarTags();

echo "<tr bgcolor='$fila1_color' border='1' bordercolor='1'><td valign='top'>
<B>$p[3]</B><td><b>$p[4]</b><p>$mensaje1</td></tr>
<tr bgcolor='$fila1_color' border='1' bordercolor='#ffffff'><td>$eliminar</td>
<td>Fecha: $p[5]</td></tr>";
}
}
}
fclose($fp);

$fp = fopen ($posts, "rb");

$color=0;
while (!feof ($fp))
{
$buffer = fgets($fp, 4096);
if(substr($buffer, 0, 12 )=="[nuevo_post]")
{
$p=explode('|||^^^|||', "$buffer");
if ($p[2]==$tid)
{
$asunto = substr(strip_tags($p[4]),0,30);
$nombre = substr(strip_tags($p[3]),0,10);
$mensaje1 = nl2br($p[6]);

if ($usuario == $loginNombre && $password == $loginPass)
{
$eliminar = "[ <a href='index.php?ver_formulario=$verFormulario&a=el iminar&usuario=$usuario&password=$password&tid=$ti d&p1=$p[1]&p2=$p[2]&p3=$p[3]&p4=$p[4]'>Eliminar</a> ]";
}

reemplazarTags();

if ($color==0) {
echo "<tr bgcolor='$fila2_color' border='1' bordercolor='1'><td valign='top'><B>$nombre</B><td><B>Re: $asunto</B><p>$mensaje1</td>
<tr bgcolor='$fila2_color' border='1' bordercolor='#ffffff'><td>$eliminar</td><td>Fecha: $p[5]</td></tr>";
$color=1;
}
else {
echo "<tr bgcolor='$fila1_color' border='1' bordercolor='1'><td valign='top'><B>$nombre</B><td><B>Re: $asunto</B><p>n$mensaje1</td>
<tr bgcolor='$fila1_color' border='1' bordercolor='#ffffff'><td>$eliminar</td><td>Fecha: $p[5]</td></tr>";
$color=0;
}
}
}
}
fclose($fp);
echo "</table><table width='700'><tr><td></tr></td>";
echo "<tr><td align='right'><A HREF='index.php?ver_formulario=$verFormulario'>Vol ver al Foro</A></tr></td></table>";

// Mostrar todos los mensajes

default:

$limite = 5;
$ahora=date("d-m-y");
$zonahoraria=date("O");
echo "<table border='0' width='700' cellspacing='5'><tr><td>$nForo<td align='right'>$temas temas y $mens mensajes</td></tr></table>
<table border='0' width='700' cellspacing='1' cellpadding='2' bgcolor='$borde_color'>
<tr height='25' bgcolor='#CC0033' border='1' bordercolor='1' style='color: #FFFFFF'><td width='20'> </td><td width='280'>
<b>Asunto</b></td><td width='90'><b>Autor</b></td><td width='80'><b>Respuestas</b></td><td width='80'><b>Fecha</b></td></tr>";
$fp = fopen ($posts, "rb");
while (!feof ($fp))
{
$buffer = fgets($fp, 4096);
if(substr($buffer, 0, 12 )=="[nuevo_post]")
{
$p=explode('|||^^^|||', "$buffer");
if ($p[2]==0)
{
$fp1 = fopen ($posts, "rb");
$respuestas=0;
while (!feof ($fp1))
{
$buffer1 = fgets($fp1, 4096);

if(substr($buffer1, 0, 12 )=="[nuevo_post]")
{

$p1=explode('|||^^^|||', "$buffer1");
if ($p1[2]==$p[1]) {
$respuestas++;
}

}
}
fclose($fp1);

echo "<tr height='25' bgcolor='#ffffff' border='1' bordercolor='1'><td>";
if ($respuestas==0)
{
echo "<img src='imagenes/0mens.gif' width='16' height='16'>";
}
else
{
echo "<img src='imagenes/1mens.gif' width='16' height='16'>";
}
echo "<td><A HREF='index.php?ver_formulario=$verFormulario&a=ve r_mensaje&tid=$p[1]'>$p[4]</A><td>$p[3]<td align='center'>$respuestas<td>$p[5]</td></tr>";
}
}
}
fclose ($fp);
echo "</table><br>";
  #2 (permalink)  
Antiguo 13/01/2007, 18:22
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Re: ayuda con este foro, por favor!

capaz con esto se te soluciona

Código PHP:
function validarTags() 
{
global 
$nombre;
global 
$asunto;
global 
$mensaje;
$nombre htmlspecialchars(trim($nombre));
$nombre str_replace("&","&",$nombre);
$nombre preg_replace("/(1512)|(15)|(12)/","",$nombre);
$nombre stripslashes(str_replace("<","",$nombre));
$nombre strip_tags(str_replace(">","",$nombre));
$nombre substr(strip_tags($nombre),0,20);
$asunto htmlspecialchars(trim($asunto));
$asunto str_replace("&","&",$asunto);
$asunto preg_replace("/(1512)|(15)|(12)/","",$asunto);
$asunto stripslashes(str_replace("<","",$asunto));
$asunto strip_tags(str_replace(">","",$asunto));
$asunto substr(strip_tags($asunto),0,50);
$mensaje htmlspecialchars(trim($mensaje));
$mensaje str_replace("&","&",$mensaje);
$mensaje preg_replace("/(1512)|(15)|(12)/","<br>",$mensaje);
$mensaje str_replace("<","",$mensaje);
$mensaje str_replace(">","",$mensaje);

$mensaje str_replace("\n","",$mensaje);

return;

  #3 (permalink)  
Antiguo 14/01/2007, 06:24
Avatar de marijos  
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 241
Antigüedad: 19 años, 11 meses
Puntos: 0
Re: ayuda con este foro, por favor!

gracias por la ayuda, pero no se que pasa... no se soluciona. un saludo!
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 20:33.