MURiba

Buscar

Libro de visitas en PHP PDF Imprimir E-Mail
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

 

 



Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
Comentarios
Añadir nuevoBuscarRSS
asd - asd IP:84.123.109.35 | 2008-06-11 16:02:32
asd
Yoni - libro de visitas IP:189.130.151.54 | 2008-06-13 00:46:54
Me conformo con un libro de visitas como este
hola - hola IP:190.22.21.252 | 2008-06-20 18:40:06
hola
Escribir comentario
Nombre:
Tí­tulo:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image

Powered by JoomlaCommentCopyright (C) 2006 Frantisek Hliva. All rights reserved.Homepage: http://cavo.co.nr/

Modificado el ( domingo, 04 de mayo de 2008 )
 
< Anterior   Siguiente >

Comunidad Ibagué 2007-2008