Foros del Web » Programando para Internet » PHP »

Ayuda de un experto

Estas en el tema de Ayuda de un experto en el foro de PHP en Foros del Web. <? // Ruta absoluta a los archivos de texto: $postsID = "mensajes/id.dat"; $posts = "mensajes/mensajes.dat"; // Nombre del foro $nForo = "Mangafanatics"; // Colores del ...
  #1 (permalink)  
Antiguo 24/01/2003, 06:56
 
Fecha de Ingreso: marzo-2002
Ubicación: Valencia
Mensajes: 65
Antigüedad: 22 años, 1 mes
Puntos: 2
Ayuda de un experto

<?
// Ruta absoluta a los archivos de texto:
$postsID = "mensajes/id.dat";
$posts = "mensajes/mensajes.dat";

// Nombre del foro
$nForo = "Mangafanatics";

// Colores del foro
$tabla_color="#7A8EEB";
$borde_color="#DBDBDB";
$fila1_color="#ffffff";
$fila2_color="#EAEAFF";

// Mostrar formulario 'si' o 'no'
$verFormulario = "si";

// Login: Nombre (admin) y Pass (pass)
$loginNombre = "fansmanga";
$loginPass = "manga2";

function validarTags()
{
global $nombre;
global $asunto;
global $mensaje;
$nombre = htmlspecialchars(trim($nombre));
$nombre = str_replace("&","&",$nombre);
$nombre = preg_replace("/(\015\012)|(\015)|(\012)/","",$nombre);
$nombre = stripslashes(str_replace("<","",$nombre));
$nombre = strip_tags(str_replace(">","",$nombre));
$nombre = substr(strip_tags($nombre),0,12);
$asunto = htmlspecialchars(trim($asunto));
$asunto = str_replace("&","&",$asunto);
$asunto = preg_replace("/(\015\012)|(\015)|(\012)/","",$asunto);
$asunto = stripslashes(str_replace("<","",$asunto));
$asunto = strip_tags(str_replace(">","",$asunto));
$asunto = substr(strip_tags($asunto),0,30);
$mensaje = htmlspecialchars(trim($mensaje));
$mensaje = str_replace("&","&",$mensaje);
$mensaje = preg_replace("/(\015\012)|(\015)|(\012)/","<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 = eregi_replace (":)", "<img src='imagenes/sonrisa.gif' width='15' height='15'>", $mensaje1);
$mensaje1 = eregi_replace (":D", "<img src='imagenes/divertido.gif' width='15' height='15'>", $mensaje1);
$mensaje1 = eregi_replace (";)", "<img src='imagenes/ojo.gif' width='15' height='15'>", $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)
{

// Ingrear al sistema

case "login":

echo "<form action='index.php?ver_formulario=$verFormulario&a= ver_mensaje&tid=$tid' method='post'>\n";
echo "<table border='0' cellspacing='1' cellpadding='3' width='320' bgcolor='$borde_color'>\n<tr bgcolor='$tabla_color' style='color: rgb(255,255,255)'>\n<td><b>Ingresar al sistema</b></td></tr>\n";
echo "<tr><td width='320' colspan='2' bgcolor='#ffffff'>\n";
echo "<table cols='2' width='320' class='body'>\n";
echo "<tr><td colspan='2' bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>\n";
echo "<tr><td width='70' valign='top'>Usuario:</td><td width='250'>\n<input type='text' name='usuario' size='35' maxlength='12' class='input'></td></tr>\n";
echo "<tr><td width='70' valign='top'>Password:</td><td width='250'>\n<input type='text' name='password' size='35' maxlength='30' class='input'></td></tr>\n";
echo "<tr><td width='320' colspan='2'></td></tr>\n";
echo "<tr><td width='70' valign='top'></td><td width='250'>\n<input type='submit' name='login' value='Ingresar' class='boton'> \n<input type='reset' value='Restablecer' class='boton'></td></tr>\n";
echo "<tr><td bgcolor='#ffffff'><img src='imagenes/tablasepara.gif' width='1' height='10'></td></tr>\n";
echo "</table></td></tr></table></form>\n";
if (!$usuario or !$password) {
echo "<a href='index.php?ver_formulario=$verFormulario&a=ve r_mensaje&tid=$tid'><< Volver al mensaje</a>";
}

break;


// Postear un nuevo mensaje

case "postnuevo":

// Validar formulario

if (!$nombre or !$asunto or !$mensaje) {
echo "Por favor, complete todos los campos del formuario.<br><a href='index.php?ver_formulario=$verFormulario'><< Volver al Foro</a>";
}
else {

escribirMensaje($posts, $postsID);

// 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. Su mensaje ha sido agregado.<br><a href='index.php?ver_formulario=$verFormulario' target='_top'><< Volver atrás</a>";
}
break;


// En caso de que sea una respuesta

case "responder":

if (!$nombre or !$asunto or !$mensaje) {
echo "Por favor, complete todos los campos del formuario.<br><a href='index.php?ver_formulario=$verFormulario&a=ve r_mensaje&tid=$tid' target='_top'><< Volver al mensaje</a>";
}

else {

escribirMensaje($posts, $postsID);

// 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. Su 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='550'>\n<tr><td align='left'>\n<tr><td>$nForo<td align='right'>\n";
if ($usuario != $loginNombre || $password != $loginPass)
{
echo "<a href='index.php?ver_formulario=$verFormulario&a=lo gin&tid=$tid'>Ingresar</a> | ";
}
elseif ($usuario == $loginNombre && $password == $loginPass)
{
$verFormulario = "no";
}
echo "<a href='index.php?ver_formulario=$verFormulario' target='_top'>Volver al Foro</a>\n</td></tr></table>\n
<table border='0' width='550' cellspacing='1' cellpadding='2' bgcolor='$borde_color'>\n<tr bgcolor='$tabla_color' border='1' bordercolor='1' style='color: rgb(255,255,255)'>
<td width='100'>\n<b>Autor</b><td width='450'><b>Mensaje</b></td></tr>\n";

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

Última edición por Webstudio; 24/01/2003 a las 07:06
  #2 (permalink)  
Antiguo 24/01/2003, 07:05
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Y?
cuál es el problema ?
Que error tie da ?
No pretendas que posteando una chorrera de código, alguien se vaya a tomar la molestia de leerlo todo y encontrar el error.
Si quieres ayuda, por favor ayudanos a ayudarte, de esta manera no se puede.
Dinos :

1) Que error te da y en que linea
2) Postea SOLO la linea o las lineas alrededor de las que te da error
3) Dinos que versión del PHP tienes
4) Bajo que SO estás haciendo las pruebas
5) Qué es lo que has hecho para intentar solucionar el problema.

Suerte-
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #3 (permalink)  
Antiguo 24/01/2003, 14:12
 
Fecha de Ingreso: marzo-2002
Ubicación: Valencia
Mensajes: 65
Antigüedad: 22 años, 1 mes
Puntos: 2
Perdon se me rompio el ordenata

pues que al codigo (de un foro) le falta algo, no se, no va, (en teoria iba)
algo le debe faltar pero no se lo que.
eso era
Gracias a todos
  #4 (permalink)  
Antiguo 24/01/2003, 14:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y si pones el código disponible para bajarselo de algun sitio (algun .phps .. o .zip .. o lo q sea) .. o por lo menos aquí publicas el código con el boton "PHP" a la hora de escribir código en el foro mejor todavia .. se verá mas claro ..

... Y .. Por supuesto .. es muy cómodo tirar un código y esperar que alguien se rompa la cabeza viendo q "puede pasarle" al código; eso obliga a probarlo y testear tu código y .. bueno siempre habrá alguien q tenga tiempo y GANAS en probarlo .. pero si lo pones mas facil para los que te intenten responder mejor ...

... Si ese "código" lo has sacado de X parte .. ponte en contacto con el autor y mira a ver q pasa o que le falta ..


Un saludo,
  #5 (permalink)  
Antiguo 24/01/2003, 15:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

<sarcasmo>Te falta el ?> de cerrar el codigo PHP</sarcasmo>

Ahora en serio. Como ya te han dicho, posteando asi no vas ha lograr mucha ayuda. Si alguien te ha hecho el codigo, preguntale si hay que tener cuidado con alguna configuracion del servidor o necesita alguna cosa especial.

Si lo has hecho tu, te toca trazar el codigo hasta llegar a lo que no funciona. Por cierto, tienes que definir eso de "que no va". Esa expresion puede significar lo mismo que te da un error o que no hace lo que esperas. Para que sea mas facil trazar el script, yo moveria el codigo de las funciones a un fichero aparte y lo incluiria con include(). Luego iria comprobando la ejecucion del script paso a paso. Como supongo que no tienes un depudador, te tocara ir poniendo echos cada ciertas lineas. Vete comprobando codigo poco a poco. El codigo que sea una simple asignacion de una constante a una variable no suele ser necesario que la compruebes. Pero si es el valor devuelto por una funcion, despues de la asignacion haces un echo del valor devuelto y de los parametros de la funcion y miras si son los esperados. Si no lo son, es que falla la funcion. Si el codigo crea archivos o registros en BD, comprueba a mano que los crea. Para comprobar las condiciones de if y demas, antes del if haz un echo de las variables de las condiciones y otro dentro del if para comprobar que entra. Por supuesto, comprueba que has cerrado las { donde corresponde y que no hay errores de sintaxis (comillas, punto y coma, etc).

Otra solucion mas traumatica es volver ha hacer el script desde cero, pero añadiendo codigo poco a poco. Escribes un poco de codigo y compruebas que hace lo que se supone que debe hacer. Luego otro poco y compruebas lo de este trozo y todo lo anterior. Si falla, sabes que es del ultimo codigo creado.

Otra cosa que se me olvidaba. Tambien debes repasar el diseño del script que has hecho en papel, ya sea como diagrama de flujo o como pseudo- codigo, porque puede ser que te hayas confundido en alguna condicional.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 21:12.