|
Escrito por [D-M-K]
|
|
domingo, 04 de mayo de 2008 |
|
Como crear un libro de visitas
Hol@ quetal, es este pequeño articulo voy a explicar como hacer un sencillo libro de visitas en php para tu Web.
Requerimientos
- PHP - 1 Formulario - 1 Archivo donde guardar los mensajes . Descripcion del codigo - El usuario a traves del formulario envia un mensaje el cual es recibido por php mediante el metodo post. Luego este mensaje es guardado en una variable y pasa por una serie de validaciones para evitar la insersión de codigo HTML y posibles ataques XSS. EL mensaje es guardado en un archivo, que inicialmente esta en blanco, de tal forma que cada vez que se envia el formulario el archivo pasa por el proceso de ser abierto, escrito, cerrado y luego mostrado.
Partes del código 1. Formulario. <form method="POST"> Comentario : <!-- Aqui se guarda el mensaje --> <textarea name="mensaje" rows="5" cols="30"></textarea><br> Autor <!-- Aqui se guarda el autor --> <input type="text" name="visitante"><br>
<!-- boton para enviar formulario --> <input type="submit" value="Dejar Comentario" class="boton"> </form> [/code} [b]2.[/b] Codigo PHP para guardar el mensaje [code] <? //Aqui se hace una demostracion del manejo de archivo a partir de un libro de visitas. if (isset($_POST['mensaje']) and isset($_POST['visitante'])){ //Aqui se abre el archivo donde se guardara el mensaje $fp = fopen("database.txt","a"); //Aqui se toma la fecha y hora del mensaje $fecha = "<i>" . date("Y-n-d H:i:s") . "</i>"; //Aqui se toma quien es el autor del mensajes $visitante = ($_POST['visitante'] != '')?"<br><b> By $visitante </b>":"<br><b> By Anonimo </b>"; //Aqui se valida que el mensaje no reciba codigo html a traves de la funcion htmlspecialchars. esto es para evitar los famosos defacings y los ataques XSS. //Si quieres ver el efecto solo comentariza la siguiente linea y serás vulnerable :P $mensaje = htmlspecialchars($_POST['mensaje']); //Aqui se arregla el mensaje a mostrar incluyendo la fecha, el mensaje y el visitante $mensaje = "<p><li> $fecha <br> $mensaje $visitante \n"; //Aqui se escribe en el arcivo fwrite($fp, $mensaje); //Aqui se cierra el archivo fclose($fp); ?> 3. Codigo PHP para mostrar el mensaje <? //Aqui se llama al archivo que contiene los mensajes para mostrar todo que han colocado los usuaarios $fp = fopen("database.txt","r"); if ($fp){ print (fread($fp,filesize("database.txt"))); } fclose($fp); ?> Recogiendo todo el codigo Este es el código completo que contiene una porcion de CSS para darle una interfaz un poco más agradable. <?
/** * @Nombre : libro.php * @Descripcion : Ejemplo sencillo para crear un libro de visitas. **/ //Aqui se hace una demostracion del manejo de archivo a partir de un libro de visitas. if (isset($_POST['mensaje']) and isset($_POST['visitante'])){ //Aqui se abre el archivo donde se guardara el mensaje $fp = fopen("database.txt","a"); //Aqui se toma la fecha y hora del mensaje $fecha = "<i>" . date("Y-n-d H:i:s") . "</i>"; //Aqui se toma quien es el autor del mensajes $visitante = ($_POST['visitante'] != '')?"<br><b> By $visitante </b>":"<br><b> By Anonimo </b>"; //Aqui se valida que el mensaje no reciba codigo html a traves de la funcion htmlspecialchars. esto es para evitar los famosos defacings y los ataques XSS. //Si quieres ver el efecto solo comentariza la siguiente linea y serás vulnerable :P $mensaje = htmlspecialchars($_POST['mensaje']); //Aqui se arregla el mensaje a mostrar incluyendo la fecha, el mensaje y el visitante $mensaje = "<p><li> $fecha <br> $mensaje $visitante \n"; //Aqui se escribe en el arcivo fwrite($fp, $mensaje); //Aqui se cierra el archivo fclose($fp); }//Esta llave cierra el IF ?> <html> <head> <title> Libro de visitas </title> <!-- Codigo CSS para un diseño mas agradable --> <style type="text/css"> i{ font:10pt verdana; color:#3366cc; font-style:italic; } li{ padding-left:15px; } b{ font:9pt verdana; color:#222222; font-style:italic; font-weight:bold; } textarea, input{ border:1px solid #aaaaaa; font:11pt verdana; } .activo{ border:1px solid #ff2222; font:11pt verdana; background-color:#f5f5f5; } input.boton{ background-color:#efefef; border:1px solid #ee5555; font:10pt verdana; } input.boton-on{ background-color:#f5f5f5; border:1px solid #336699; font:10pt verdana; } </style> <!-- Aqui se cierra el codigo --> </head> <body style="font:12pt verdana;" onload="document.all.mensaje.focus();"> <h1 align="center">Libro de Visitas</h1><hr> <ol> <? //Aqui se llama al archivo que contiene los mensajes para mostrar todo que han colocado los usuaarios $fp = fopen("database.txt","r"); print (@fread($fp,filesize("database.txt"))); fclose($fp); ?> </ol> <hr> <center> <form method="POST"> <table> <tr valign="top"> <td>Comentario : </td> <td> <textarea name="mensaje" rows="5" cols="30" onmouseover="className='activo'" onmouseout="className=''"></textarea><br> </td> </tr> <tr height="30px"> <td> Autor </td> <td><input type="text" name="visitante" onmouseover="className='activo'" onmouseout="className=''"></td> </tr> <tr height="40px"> <td colspan="2" align="center" style="border-top:1xp solid #aaaaaa;"> <input type="submit" value="Dejar Comentario" class="boton" onmouseover="className='boton-on'" onmouseout="className='boton'"> </td> </tr> </form> </center> </body> </html> PTA : El archivo que contiene todos los mensajes puede ser depurado para quitar mensajes basura o mensajes con código html o javascript. Salu2 |
|
Modificado el ( domingo, 04 de mayo de 2008 )
|