Foros del Web » Programando para Internet » PHP »

Ayuda con script de guestbook

Estas en el tema de Ayuda con script de guestbook en el foro de PHP en Foros del Web. Que tal amigos, tengo el siguiente script para un guestbook, pero resulta que no lee el txt donde guardo los comentarios, ni siquiera los escribe ...
  #1 (permalink)  
Antiguo 31/07/2009, 19:28
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Ayuda con script de guestbook

Que tal amigos, tengo el siguiente script para un guestbook, pero resulta que no lee el txt donde guardo los comentarios, ni siquiera los escribe ya probé con permisos en 775 y 777, les dejo script si me pueden ayudar se los agradecería.


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Tu comentario:</p>
<p><textarea name="comentario" id="comentario" cols="60" rows="5"></textarea></p>
<p>Tu nombre:</p>
<input name="nombre" type="text" id="nombre" size="40">
<p>Tu e-mail:</p>
<input name="email" type="text" id="email" size="40">
<input type="submit" name="Publicar" id="Publicar" value="Publicar">
</form>
<p><span class="text_3"><strong>Mostrar todos los comentarios</strong></span></p>
<?php
//Guarda el nombre del archivo en la variable
$file = "libro.txt";
//Variable comentario definida? El nombre y email no estan vacios?
if (isset($_POST['cometario'] ) && $_POST['nombre'] != "" && $_POST['email'] != ""){
$comentario = $_POST['comentario'];
$nombre = $_POST['nombre'];
$email = $_POST['email'];
//El archivo se abre para lectura-escritura
$fp = fopen($file, "r+");
//Leer todos los datos y almacenar en $old
$old = fread($fp, filesize($file));
//Se crea el vinculo de email
$email = "<a href=\"mailto:$email\">$email </a>";
//Se incluye la fecha y se le da formato
$dateOfEntry = date("Y-n-j");
//Ocultar caracteres HTML, eliminar slashes, mantener saltos de linea
$comentario = htmlspecialchars($comentario);
$comentario = stripslashes(n12br($comentario));
//Montar la entrada (entry) del libro de visitas
$entry ="<p><b>$nombre</b> ($email) wrote on <i>$dateOfEntry</i>: <br>$comentario</p>\n";
//El cursor invisible salta al principio
rewind($fp);
//Escribir la nueva entrada antes de las antiguas
fputs($fp, "$entry \n $old");
//Cerrar archivo
fclose($fp);
}
//Mostrar archivo completo
readfile($file);
?>
  #2 (permalink)  
Antiguo 31/07/2009, 21:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Ayuda con script de guestbook

Tema movido desde POO.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 01/08/2009, 10:37
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

Gracias Jam por mover el tema a un lugar mas apropiado, espero aquí me puedan ayudar

saludoss
  #4 (permalink)  
Antiguo 01/08/2009, 10:56
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Vamos a ver con esto

Código PHP:
Ver original
  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2. <p>Tu comentario:</p>
  3. <p><textarea name="comentario" id="comentario" cols="60" rows="5"></textarea></p>
  4. <p>Tu nombre:</p>
  5. <input name="nombre" type="text" id="nombre" size="40">
  6. <p>Tu e-mail:</p>
  7. <input name="email" type="text" id="email" size="40">
  8. <input type="submit" name="Publicar" id="Publicar" value="Publicar">
  9. </form>
  10. <p><span class="text_3"><strong>Mostrar todos los comentarios</strong></span></p>
  11. <?php
  12. //Guarda el nombre del archivo en la variable
  13. $file = "libro.txt";
  14. //Variable comentario definida? El nombre y email no estan vacios?
  15. if (isset($_POST['comentario'] ) && !empty($_POST['nombre']) && !empty($_POST['email'])){
  16. $comentario = $_POST['comentario'];
  17. $nombre = $_POST['nombre'];
  18. $email = $_POST['email'];
  19. //El archivo se abre para lectura-escritura
  20. $fp = @fopen($file, "a+");
  21. //Leer todos los datos y almacenar en $old
  22. $old = @fread($fp, filesize($file));
  23. //Se crea el vinculo de email
  24. $email = "<a href=\"mailto:$email\">$email </a>";
  25. //Se incluye la fecha y se le da formato
  26. $dateOfEntry = date("Y-n-j");
  27. //Ocultar caracteres HTML, eliminar slashes, mantener saltos de linea
  28. $comentario = htmlspecialchars($comentario);
  29. //$comentario = stripslashes(n12br($comentario));
  30. //Montar la entrada (entry) del libro de visitas
  31. $entry ="<p><b>$nombre</b> ($email) wrote on <i>$dateOfEntry</i>: <br>$comentario</p>\n";
  32. //El cursor invisible salta al principio
  33. @rewind($fp);
  34. //Escribir la nueva entrada antes de las antiguas
  35. @fputs($fp, "$entry \n $old");
  36. //Cerrar archivo
  37. @fclose($fp);
  38. }
  39. //Mostrar archivo completo
  40. @readfile($file);
  41. ?>
  #5 (permalink)  
Antiguo 01/08/2009, 11:00
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Veo que se duplican los mensajes
es por esta linea

@fputs($fp, "$entry \n $old");

quitale el $old
  #6 (permalink)  
Antiguo 01/08/2009, 11:17
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

gjx2

ya probé con las modificaciones que le hiciste al script pero sigue sin funcionar, no marca ningún error pero no escribe en el txt

lo eh probado en el server local y en un hosting que tengo, pero no funciona en ningun lado
  #7 (permalink)  
Antiguo 01/08/2009, 11:24
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por karlingaz Ver Mensaje
gjx2

ya probé con las modificaciones que le hiciste al script pero sigue sin funcionar, no marca ningún error pero no escribe en el txt

lo eh probado en el server local y en un hosting que tengo, pero no funciona en ningun lado
Hola , prueba con el siguiente code y fijate si te da algun error o algo :).

Código php:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  5. <p>Tu comentario:</p>
  6. <p><textarea name="comentario" id="comentario" cols="60" rows="5"></textarea></p>
  7. <p>Tu nombre:</p>
  8. <input name="nombre" type="text" id="nombre" size="40">
  9. <p>Tu e-mail:</p>
  10. <input name="email" type="text" id="email" size="40">
  11. <input type="submit" name="Publicar" id="Publicar" value="Publicar">
  12. </form>
  13. <p><span class="text_3"><strong>Mostrar todos los comentarios</strong></span></p>
  14. </body>
  15. </html>
  16. <?php
  17. //Guarda el nombre del archivo en la variable
  18. $file = "libro.txt";
  19. //Variable comentario definida? El nombre y email no estan vacios?
  20. if (isset($_POST['comentario'] ) && !empty($_POST['nombre']) && !empty($_POST['email'])){
  21. $comentario = $_POST['comentario'];
  22. $nombre = $_POST['nombre'];
  23. $email = $_POST['email'];
  24. //El archivo se abre para lectura-escritura
  25. $fp = fopen($file, "a+");
  26. //Leer todos los datos y almacenar en $old
  27. $old = fread($fp, filesize($file));
  28. //Se crea el vinculo de email
  29. $email = "<a href=\"mailto:$email\">$email </a>";
  30. //Se incluye la fecha y se le da formato
  31. $dateOfEntry = date("Y-n-j");
  32. //Ocultar caracteres HTML, eliminar slashes, mantener saltos de linea
  33. $comentario = htmlspecialchars($comentario);
  34. //$comentario = stripslashes(n12br($comentario));
  35. //Montar la entrada (entry) del libro de visitas
  36. $entry ="<p><b>$nombre</b> ($email) wrote on <i>$dateOfEntry</i>: <br>$comentario</p>\n";
  37. //El cursor invisible salta al principio
  38. rewind($fp);
  39. //Escribir la nueva entrada antes de las antiguas
  40. fputs($fp, "$entry \n");
  41. //Cerrar archivo
  42. fclose($fp);
  43. }
  44. //Mostrar archivo completo
  45. readfile($file);
  46. ?>

Saludos!
  #8 (permalink)  
Antiguo 01/08/2009, 11:26
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Tienes que copiar el codigo
tal cual como te lo presento

Por que vi que tenias un problema en isset($_POST['comentario'])
y algunos mas.
  #9 (permalink)  
Antiguo 01/08/2009, 11:29
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Este sr. jonatanc esta empenado en no usar la @ para los wrn . :s

Sr. jonatanc
si el archivo no existe como piensa usted que lo vas a leer con fread() ?
se va a crear el archivo , pero te va adar un wrn .

al menos que uses
file_exists()
  #10 (permalink)  
Antiguo 01/08/2009, 11:32
Avatar de MasterXNicoX  
Fecha de Ingreso: junio-2008
Ubicación: ../Arg/SanLuis.city
Mensajes: 943
Antigüedad: 15 años, 10 meses
Puntos: 28
Respuesta: Ayuda con script de guestbook

Cita:
Este sr. jonatanc esta empenado en no usar la @ para los wrn . :s
Jajajajajaj siiii desde hoy xD.. Pero bue, cada uno tiene sus formas de trabajar
__________________
Adivino del Foro y Admirador de Sabios
  #11 (permalink)  
Antiguo 01/08/2009, 11:34
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Ayuda con script de guestbook

Estimados , la idea de eliminar todo tipo de @ consiste en que salgan todos los errores a la luz , simplemente para eso , mi tecnica de programar consiste en no suprimir nada , sino al contrario en programar correctamente o intentar programar correctamente.

Saludos!
  #12 (permalink)  
Antiguo 01/08/2009, 11:41
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Bueno lo felicito por esa idea tan brillante.
el problema es que el codigo aqui presente no fue hecho por usted
fue hecho por una persona que quiere resolver su problema no buscar un problema a otro problema.

se lo digo con todo respeto .
  #13 (permalink)  
Antiguo 01/08/2009, 11:41
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por gjx2 Ver Mensaje
Tienes que copiar el codigo
tal cual como te lo presento

Por que vi que tenias un problema en isset($_POST['comentario'])
y algunos mas.
si use el código tal como me lo das, ahora el archivo libro.txt si existe en el mismo directorio y tiene propiedades de lectura y escritura.
  #14 (permalink)  
Antiguo 01/08/2009, 11:45
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Ayuda con script de guestbook

Solamente era para intentar ayudar a ver en que parte le falla ese codigo , no me interesa quien lo hizo o quien no lo hizo , yo probe el codigo acá en local y funciona sin problemas ,pero xq tiene bien los permisos y demás , por eso le dije que pruebe con ese codigo para que salten errores y tratar de ver xq no andaba , pero si ya existe libro.txt y tiene los permisos bien otorgados deberian de andar , por lo menos asi sucede en mi local.

Saludos y tema terminado :) , no tengo ganas de discutir por un arroba pelo....
  #15 (permalink)  
Antiguo 01/08/2009, 11:48
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por jonatanc Ver Mensaje
Estimados , la idea de eliminar todo tipo de @ consiste en que salgan todos los errores a la luz , simplemente para eso , mi tecnica de programar consiste en no suprimir nada , sino al contrario en programar correctamente o intentar programar correctamente.

Saludos!
Como bien dice el sr. quitale los @ al codigo a ver si te genera algun wrn
Y verifica si al menos te esta guardando algo en el documento.
  #16 (permalink)  
Antiguo 01/08/2009, 11:50
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por jonatanc Ver Mensaje
Solamente era para intentar ayudar a ver en que parte le falla ese codigo , no me interesa quien lo hizo o quien no lo hizo , yo probe el codigo acá en local y funciona sin problemas ,pero xq tiene bien los permisos y demás , por eso le dije que pruebe con ese codigo para que salten errores y tratar de ver xq no andaba , pero si ya existe libro.txt y tiene los permisos bien otorgados deberian de andar , por lo menos asi sucede en mi local.

Saludos y tema terminado :) , no tengo ganas de discutir por un arroba pelo....
Vaya, siento que se halla armado controversia por las técnicas que usan cada uno de ustedes, lo que no entiendo por que a mi no me funciona, y no marca ningún error, pero no escribe en el txt.

lo he probado local y en el hosting que tengo y en ningún lado me anda.

Gracias a los dos por su ayuda
  #17 (permalink)  
Antiguo 01/08/2009, 12:05
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Descuida es solo una charla como amigos


Me gustaria que probaras algo tan simple como esto.



Código PHP:
Ver original
  1. $file = "libro.txt";
  2.  
  3. $contenido = "Hola Mundo!";
  4. $fp = fopen($file, "a+");
  5.  
  6. fputs($fp, "$contenido \n");
  7.  
  8. fclose($fp);
  9.  
  10. readfile($file);
  #18 (permalink)  
Antiguo 01/08/2009, 12:24
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por gjx2 Ver Mensaje
Descuida es solo una charla como amigos


Me gustaria que probaras algo tan simple como esto.



Código PHP:
Ver original
  1. $file = "libro.txt";
  2.  
  3. $contenido = "Hola Mundo!";
  4. $fp = fopen($file, "a+");
  5.  
  6. fputs($fp, "$contenido \n");
  7.  
  8. fclose($fp);
  9.  
  10. readfile($file);
pues de esta forma si muestra el hola mundo
  #19 (permalink)  
Antiguo 01/08/2009, 12:27
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

Vamos hacer esto.

Código PHP:
<html>
<head></head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Tu comentario:</p>
<p><textarea name="comentario" id="comentario" cols="60" rows="5"></textarea></p>
<p>Tu nombre:</p>
<input name="nombre" type="text" id="nombre" size="40">
<p>Tu e-mail:</p>
<input name="email" type="text" id="email" size="40">
<input type="submit" name="Publicar" id="Publicar" value="Publicar">
</form> 
<p><span class="text_3"><strong>Mostrar todos los comentarios</strong></span></p>
</body>
</html>
<?php
//Guarda el nombre del archivo en la variable
$file "libro.txt";
//Variable comentario definida? El nombre y email no estan vacios?

$comentario $_POST['comentario'];
$nombre $_POST['nombre'];
$email $_POST['email'];
//El archivo se abre para lectura-escritura
$fp fopen($file"a+");
//Leer todos los datos y almacenar en $old
$old fread($fpfilesize($file));
//Se crea el vinculo de email
$email "<a href=\"mailto:$email\">$email </a>";
//Se incluye la fecha y se le da formato
$dateOfEntry date("Y-n-j");
//Ocultar caracteres HTML, eliminar slashes, mantener saltos de linea
$comentario htmlspecialchars($comentario);
//$comentario = stripslashes(n12br($comentario));
//Montar la entrada (entry) del libro de visitas
$entry ="<p><b>$nombre</b> ($email) wrote on <i>$dateOfEntry</i>: <br>$comentario</p>\n";
//El cursor invisible salta al principio
rewind($fp);
//Escribir la nueva entrada antes de las antiguas
fputs($fp"$entry \n");
//Cerrar archivo
fclose($fp);

//Mostrar archivo completo
readfile($file);
?>
  #20 (permalink)  
Antiguo 01/08/2009, 12:54
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

solo se esta escribiendo en el archivo el nombre, fecha y correo electrónico, sigue sin escribirse el comentario.
te dejo el link para que veas

http://www.iimae.com/daniela/index.php
  #21 (permalink)  
Antiguo 01/08/2009, 13:11
Avatar de karlingaz  
Fecha de Ingreso: diciembre-2007
Ubicación: Matamoros, México
Mensajes: 157
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ayuda con script de guestbook

Ya quedo gjx2 muchas gracias por toda tu ayuda y paciencia

Te mando un cordial saludo.
  #22 (permalink)  
Antiguo 01/08/2009, 13:16
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Ayuda con script de guestbook

No hay problemas
No olvides poner
Código PHP:
Ver original
  1. if (isset($_POST['comentario'] ) && !empty($_POST['nombre']) && !empty($_POST['email'])){
  #23 (permalink)  
Antiguo 01/08/2009, 13:24
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Ayuda con script de guestbook

no es por molestar pero que pasaría si un usuario introduce en su email esto:


Código:
" onclick="while(1) alert('hola');"
quedaría:
<a href="" onclick="while(1) alert('hola');">" onclick="while(1) alert('hola');"</a>

y cada vez que un usuario pulsaría en ese enlace se ejecutaría código javascript

Saludos :p


para sulucionarlo sustituir

$comentario = htmlspecialchars($comentario);

por

$comentario = htmlspecialchars($comentario, ENT_QUOTES);
  #24 (permalink)  
Antiguo 01/08/2009, 14:59
Avatar de MasterXNicoX  
Fecha de Ingreso: junio-2008
Ubicación: ../Arg/SanLuis.city
Mensajes: 943
Antigüedad: 15 años, 10 meses
Puntos: 28
Respuesta: Ayuda con script de guestbook

Cita:
Iniciado por albert1980 Ver Mensaje
no es por molestar pero que pasaría si un usuario introduce en su email esto:


Código:
" onclick="while(1) alert('hola');"
quedaría:
<a href="" onclick="while(1) alert('hola');">" onclick="while(1) alert('hola');"</a>

y cada vez que un usuario pulsaría en ese enlace se ejecutaría código javascript

Saludos :p


para sulucionarlo sustituir

$comentario = htmlspecialchars($comentario);

por

$comentario = htmlspecialchars($comentario, ENT_QUOTES);
__________________
Adivino del Foro y Admirador de Sabios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:17.