Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/07/2010, 10:47
elignorante
 
Fecha de Ingreso: febrero-2010
Mensajes: 26
Antigüedad: 14 años, 1 mes
Puntos: 0
cirticas intstructivas a un libro de visitas sin mysql

Hace unos meses me resolvisteis un problema y prometi que iva a aprender php. bien, hace poco que me he puesto y he conseguido hacer esto... un libro de visitas que modifica directamente el html mediante php. Es decir, recoje el texto de un formulario, luego le añade, en una variable, las etiquetas html necesarias para que aparezca en web, Y luego inserta este codigo (esta variable) en la posicion adecuada de la pagina html.

esto es lo que he hecho:

------------formulario de recogida del texto:---------------

<html>
<head>
<link rel="stylesheet" href="estilos.css" type="text/css">
</head>

<body><center>
<h4>
<form action="leer.php" method=post>
Nombre:<br /><input type=text name="nombre" size=16>
<br />
ciudad<br /><input type=text name="ciudad" size=16>
<br />
Comentario:<br /><textarea name="comentario" cols=32 rows=6></textarea>
<br />
<input type=submit value="Enviar">
</form></h4>
<h5>si quieres firmar en el libro de visitas, añade tu nombre, tu ciudad, y el comentario u opini&oacute;n que quieras</h5>

<center></body>
</html>


----------pagina web html/css donde se publican las firmas:-----------------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>pagina de contacto</title>
<link rel="stylesheet" href="estilofirmas.css" type="text/css">
</head>

<body>

<div id="container">
<h1>Firmas y comentarios</h1>

<!-- OJO: esta linea, en mi codigo, corresponde a la linea 14 (he quitado algunas cosas de la etiqueta html). es importante porque es aquí donde el php introduce los comentarios recogidos en el formulario -->

<div id="nombre">
<h2>webmaster</h2>
<h3 class="textright"> noruega 20/7/2010</h3>
</div>
<div id="texto">
<h4>aqui viene el texto<br>habría que respetar los saltos de carro<br>se investigará</h4>
</div>
</div>

</body>
</html>


--------------y este es el php----------------


<?

//recojo el texto del formulario, con strip_tags evito que me introduzcan codigo html que me pueda modificar todo.
$nombre = strip_tags ($_POST['nombre']) ;
$comentario = strip_tags ($_POST['comentario']) ;
$ciudad = strip_tags ($_POST['ciudad']);
$dia = date(" j/m/Y ");

//apertura de un codigo html que formatee el texto para que aparezca en la web
$introduct = "<div id=\"nombre\"> <h3>" .$nombre. "</h3><h2 class=\"textright\">" .$ciudad.$dia. "</h2> </div><div id=\"texto\"><h4>" .$comentario. "</h4></div>" ;

//guardo en una variable la ruta hacia el fichero
$html = "texto.html" ;

//mido con filesize el tamaño total en bytes del fichero y guardo este valor en una variable
$tamanio = filesize ($html) ;

//abro una variable contador
$i = 1;


header ("location: http://fotomoreno.com/texto.html");


//condicion: si puedo abrir el archivo (si puedo mandar un puntero al archivo) con funcion lectura y escritura, entonces...

if ( $archivo = fopen($html,"r"))
{
//mientras el puntero no llegue al final del archivo
while ( !feof ( $archivo ))
{
//guardo en una cadena cada fila del archivo (hasta un tamaño determinado)
$contenido [$i] = fgets($archivo, $tamanio);


//condicional para crear un hueco vacío en la posición 14 de la cadena (la linea en la que debe ir el nuevo html)

//si el contador ($i) es menor o igual que 14... entonces lo que hay en la posición $i de la cadena pasa a la posición anterior ($i-1)
if ($i<=14)
{
$contenido [$i-1] = $contenido [$i]; //esta es la razón por la que el contador se inicia en 1 y no en cero
}

//sumo uno al contador que sirve de índice de la cadena
$i=$i + 1;

}


//añado en la posición 14 (hueca y oportuna) el código html con el texto recogido del formulario
$contenido [14] = $introduct ;

//cierro el archivo...
fclose ($archivo);

//...para volverlo a abrir con w+ (permisos de lectura-escritura, y borra el contenido del archico o lo crea)
$archivo = fopen($html,"w+");

//bucle para meter en el archivo el contenido de la cadena (ya con el texto recogido del formulario, formateado en html, y colocado delante de todas las firmas anteriores (linea 14 del texto html)
//la variable $j es = a 0, y la iré incrementado en 1 mientras sea menor o igual que la variable i$
for ($j=0; $j <= $i; $j++)
{
fputs ($archivo, $contenido[$j]);
}
} //fin del primer if (si puedo abrir el archivo...)


//si no puedo abrir el archivo...
else
{
print ("nada chico, no funciona");
}


fclose ($archivo);

?>




y nada más. el libro de visitas funciona. el codigo php, sin los comentarios, se queda en unas pocas lineas...
Lo dejo aquí para el que le sirva, y si alguien ve que algo no se debe hacer, que se puede mejorar, que es una aberracion lo que he hecho, que hay cosas que sobran etc etc... le agradecería mucho que me lo indicas. como ya dije, soy nobato en esto del php y lo que me interesa no es hacer webs, sino ir aprendiendo.

muchas gracias y suerte al que lo utilice.