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">   <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('\\\"',""",$texto);
$comentario=eregi_replace("\\\'","'",$texto);
$comentario=eregi_replace("<","<",$texto);
$comentario=eregi_replace(">",">",$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("<br>","<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.