LIBRO DE VISITAS

Este libro de visitas funciona en base a un archivo de texto, donde cada linea del archivo continene un registro, y a su vez cada línea contiene varios campos separados por el sigono "|" (pipeline). Este archivo tiene un aspecto coo el siguiente:

Walter|Esta es una prueba|06 de julio de 2005|
Claudia|Hoy esta lloviendo|07 de julio de 2005|

El script PHP abre este archivo, lee su contenido y lo almacena en un arreglo donde cada elemento del arreglo es una linea del archivo . Luego se recoore el arreglo y se trocea para separar los campos inlcuidos en cada linea mediante la función explode.

Veamos como podría ser código del archivo PHP que llamermos libro.php:

<?php

$archivo = file("libro.txt");
/* file lee el archivo y guarda el contenido en un arreglo, donde cada elemento del arreglo corresponde a una línea del archivo */

if (!$archivo) /* si no se puede abrir el archivo */
{
     echo "<p>No se pudo abrir el archivo.</p>";
}

$filas=count($archivo);
/* la funcion count cuenta el número de elementos de un arreglo y lo guarda en la variable $filas. Esta varible nos servirá como variable de control para recorrer el arreglo $archivo */

for($i=0;$i<$filas;$i++)
{
     $campo=explode("|",$archivo[$i]);
     /* la funcion explode divide una cadena en base a un caracter elegido, en este caso | y lo guarda en el arreglo $campo
luego se va obteniendo cada campo equivalente a los elementos del arreglo */
     $nombre = $campo[0];
     $comentario = $campo[1];
     $fecha = $campo[2];

     /* finalmente se imprimen por pantalla los datos */
    echo "\n<p>$comentario<br><font color='B500C2'>$nombre</font><br><font color='FF0000'>$fecha</font></p><br>";

}

?>

Ingreso de Datos

Para los usuarios puedan ingresar sus cometarios requeriremos agregar un formulario al final de archivo libro.php y que conecte con script que sea capaz de escribir en el archivo de texto los datos ingresados a través del formulario.

<form action="agrega_comentario.php" method="get">
<p>
Tu Comentario:<br>
<TEXTAREA NAME="comentario" ROWS="8" COLS="60" WRAP="soft"></TEXTAREA></p>
<p>Tu nombre: <input type="text" name="nombre" size=40></p>
<p><input type="submit" value="agrega tu comentario">&#160;&#160;&#160;<input type="reset" value="limpiar"></p>
</form>

Debemos ahora crear el Script que ingrese los datos en el archivo de texto (agrega_comentario.php):

<?
$comentario=trim($texto); /* quita los espacios en blanco a los lados de la cadena de texto */
$nombre=trim($nombre);

/* COMILLAS Y OTROS */
/* se reemplazan las comillas y otros simbolos mediante la función eregi_replace que busca una cadena en otra, y l reemplaza por una tercera (ver Manejo de cadenas de Texto) */
$comentario=eregi_replace('\\\"',"&#34;",$texto);
$comentario=eregi_replace("\\\'","&#39;",$texto);
$comentario=eregi_replace("<","&#60;",$texto);
$comentario=eregi_replace(">","&#62;",$texto);
/* reemplazo los saltos de carro por la etiqueta <br>, de lo contario al ingresar los datos en el archivo, se me generan saltos de carfro que provocan errores al leer el archivo */
$comentario=eregi_replace("&#60;br&#62;","<br>",$texto);

if($comentario=="") /* reclama si no se ha ingresado texto */
{
echo "<center><h2>¿No vas a escribir nada?</h2></center>";
exit();
}
if($nombre=="") /* reclama si no se ha ingresado nombre */
{
echo "<center><h2>¿Y tu nombre?</h2></center>";
exit();
}
?>

<?php
/* con esta funcion se formatea la fecha al castellano */
function calcula_fecha()
{
/* consultar la funcion date en www.php.net/manual/es/ */
$dia = date ("d"); /* obtiene el número del día del mes */
$me = date ("m"); /* obtiene el número del mes */
$agno = date ("Y"); /* obtiene el año con 4 cifras */
$mes=""; /* se inicia la variable $mes vacía */
/* mediante una serie de if se obtiene el mes en castellano, la funcion date puede obtener el nombre del mes, pero lo hace en inglés */
if($me=="01") $mes="enero";
if($me=="02") $mes="febrero";
if($me=="03") $mes="marzo";
if($me=="04") $mes="abril";
if($me=="05") $mes="mayo";
if($me=="06") $mes="junio";
if($me=="07") $mes="julio";
if($me=="08") $mes="agosto";
if($me=="09") $mes="septiembre";
if($me=="10") $mes="octubre";
if($me=="11") $mes="noviembre";
if($me=="12") $mes="diciembre";
/* se arma la cadena con la fecha */
$cadena = "$dia de ";
$cadena .= "$mes de ";
$cadena .= "$agno";
return $cadena; /* se devuelve la cadena con la fecha */
}

$fecha = calcula_fecha(); /* se guarda en el valor de la funcion calcula_fecha() en la variable $fecha */
?>

<?php
$datos .= "$nombre|$comentario|$fecha|\n";
?>

<?php
/* se genera un puntero que apunta al archivo libro en modalidad de agregar al final "a" */
$archivo = fopen("libro.txt", "a");
if (!$archivo) /* si no se puede abrir el archivo reclama */
{
echo "<center><h2>No se pudieron agregar los datos</h2></center>";
exit;
}
/* Se escriben los datos */
fputs($archivo, $datos); /* fputs, escribe una cadena en el puntero indicado ($archivo) */
fclose($archivo); /* se cierra el archivo */
?>

Sería bueno ademas colocar al final un link hacia el archivo libro, para poder volver a ver todos los comentarios.

NOTA: Para que el libro de visitas funcione, además del los script hay que dar al archivo donde se guardan los datos atributos de escritura adecuados para que al ejecutar el script se pueda modificar el archivo de texto. Esto se hace aplicando CHMOD 666 sobre el archivo de texto, es decir permitir que todos puedan escribir el archivo.