Formulario con php que guarde los datos en un txt

Bueno, vamos a hacer algo tan sencillo como un formulario con el cual no necesitaremos tener phpmail, ya que el formulario no se mandará por php, sino que se guardará en un archivo, en este caso hemos elegido un archivo txt.
Esta vez os voy a dar los códigos directamente, para que os resulte más fácil. Nuestro formulario se va a formar de cuatro partes: texto, nombre, email y la imagen captcha.

Vamos a empezar creando nuestro propio captcha. En este caso encontré por internet este captcha que me pareció realmente bueno. Tenemos que crear solamente un archivo llamado captcha.php , y en él ponemos este código:
<?php
// archivo: captcha.php
function randomText($length) {
    $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
    for($i=0;$i<$length;$i++) {
      $key .= $pattern{rand(0,35)};
    }
    return $key;
}?>
<?php
session_start();
$_SESSION['tmptxt'] = randomText(8);
$captcha = imagecreatefromgif("bgcaptcha.gif");
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);
header("Content-type: image/gif");
imagegif($captcha);
?>
Además debeis colocar un archivo que se llame bgcaptcha.gif, y que debe ser la imagen que querais que tenga de fondo vuestro captcha.

Ahora vamos a pasar a hacer el archivo en el que se guardaran los datos que se envíen en el formulario. Para ello cread un archivo llamado texto.txt, subidlo a vuestro servidor y dadle permisos 777 para poder ser editado.

Por último vamos a cread nuestro formulario. Éste se compondrá, como siempre, de dos archivos, uno html y otro php.
Vamos a empezar con el html, al que le pondreis el nombre que querais. Yo le llamaré texto.html (debe estar junto al captcha.php)
En este archivo html colocareis el código que querais, y donde querais que aparezca el formulario sólo teneis que agregar el siguiente código:
<center><form action="texto.php" method="post" enctype="multipart/form-data" name="formredac">
Texto:

<textarea name="texto" cols="60" rows="8"></textarea>

Nombre:
<input name="nombre" type="text" size="30" maxlength="40" style="text-align:center" />

Email:
<input name="email" type="text" size="30" maxlength="50" style="text-align:center" />

[img]../captcha.php[/img]

  <input name="tmptxt" type="text" style="text-align:center">

<input name="" type="submit" value="Enviar" />
<input name="action" type="hidden" value="checkdata">
</form></center>

Ahora vámonos al archivo php. A éste teneis que llamárle texto.php y le pondreis al igual que el html el estilo que querais, y donde querais que aparezca las frases de que se ha enviado el formulario y to eso colocais este código:
<?php
  session_start();
if ($_POST['action'] == "checkdata") {
    if ($_SESSION['tmptxt'] == $_POST['tmptxt']) {
	
	
$nombre_archivo = 'texto.txt';
$contenido = $_POST["texto"] . "\r\nNombre:" . $_POST["nombre"] . "\r\nEmail:" . $_POST["email"] . "\r\n\r\n\r\n";

if (is_writable($nombre_archivo)) {

    if (!$gestor = fopen($nombre_archivo, 'a')) {
         echo "

No se puede abrir el archivo para guardar su texto. Por favor, si el problema persiste contacte con el administrador.</p>";
         exit;
    }

    if (fwrite($gestor, $contenido) === FALSE) {
        echo "

No se puede escribir al archivo para guardar su texto. Por favor, si el problema persiste contacte con el administrador.</p>";
        exit;
    }

    echo "

Su texto fue enviado correctamente y está pendiente de verificación.</p>

[url='index.html']Volver al índice[/url]</p>";

    fclose($gestor);

} else {
    echo "

No se puede escribir sobre el archivo para guardar su texto. Por favor, si el problema persiste contacte con el administrador.</p>";
}


    } else {
        echo "<span class='Estilo1'>El código captcha es incorrecto</span>
[url='javascript:history.go(-1);']Volver atrás[/url]";
    }
}
?>

Con eso ya tendremos nuestro formulario hecho. Este código no lo encontrareis en otro sitio (por lo menos por ahora), ya que es una mezcla que he hecho con modificaciones de otros que ya existían.

El archivo txt es privado y los usuarios no tienen acceso a el, solo lo vereis vosotros que conoceis la url.

Aquí os dejo el formulario de prueba: http://tuwebdeinformatica.com/Crearwebs/elementos/pruebas/texto.html

Y todo lo que mandeis se guardará aquí: http://tuwebdeinformatica.com/Crearwebs/elementos/pruebas/texto.txt

Espero que os sirva y os guste, jeje.
Saludos :wink:
jugoncan!!!
te pasaste
jajaja
oye oye una duda, mira vi esto del formulario q va al archivo txt y me puse a pensar si se podria usar para un libro de visitas x ejemplo.

osea que con un include o algo asi se metan esos datos en un libro de vistas, pero pues cada entrada x llamarlo asi, necesitaria su condigo html
se podria esto???
y si se pude
como hacerlo???

espero haberme exlicado
gracias
Pues yo sé hacerlo pero no sabría ponerte saltos de líneas entre las cosas que escriban en el mismo campo del formulario, es decir, que todo lo que escriban en un campo del formulario será siempre el mismo párrafo :?
Para que quede bien del todo habría que buscar la forma de convertir los saltos de línea a código html
si si
es lo que yo queria
que cuando enviaran la informacion cada comentario saliera con un codigo para que no solo se vean pues letras, sino que se vea bonito

tambien voy a buscar x ahy
haber q encuantro.
Pues mira, sólo debes de hacer unos cambios.
Haz que el archivo txt sea un html, y que no se te olvide cambiar esta parte del código php:
<?php
session_start();
if ($_POST['action'] == "checkdata") {
if ($_SESSION['tmptxt'] == $_POST['tmptxt']) {


$nombre_archivo = 'texto.txt';
$contenido = $_POST["texto"] . "\r\nNombre:" . $_POST["nombre"] . "\r\nEmail:" . $_POST["email"] . "\r\n\r\n\r\n";



Después sólo debes hacer un include en el archivo php que quieras que se vea.
Saludos :wink:
los cuatro archivos mas la imagen bgcaptcha.gif deben ir en un mismo directorio?? no hay caso que me aparezca la imagen bgcaptcha.gif que cree en el archivo texto.html para ser vista y tecleada por el usuario.
Hola. Justamente eso es lo que estaba buscando y abri un nuevo tema sin saber de la existencia de este.
Yo necesito hacer un formulario con alrededor de 200 o 300 articulos. Luego ese formulario debe grabarse en un archivo TXT, ser obtenido por un FTP y pasado a un sistema contable. Por lo tanto necesito que por cada pedido que se envie se genere un TXT diferente ya que podria darse el caso de que dos personas desde dos maquinas diferentes envien el archivo al mismo tiempo. Sabes como podria hacer esto?
La idea es tener una planilla con cada uno de los codigos de los articulos, las personas ingresaran la cantidad que deseen de cada articulo y al enviarse el formulario este debe grabarse en un TXT para ser recogido por el FTP y luego borrado para no saturar la capacidad del hosting. Sabrias como ayudarme?
Muchas Gracias
hola muy bueno el post, como hago para que te aparezca el recuadro que te aparece a vos en el campo de texto, yo copio tu codigo y en mi pagina de prueba no aparece con recuadro
Creo que el problema es de mi firefox :S
Hola Jucocan,

seguí tus instrucciones pero tengo un problema. He seguido el PASO A PASO, por lo tanto, trabajo con el editor html-kit y fuera de ese editor, no sé moverme. MI pregunta:

1. se podrá crear archivos php con el html-kit? De todos modos, creé los archivos con extensión php pero, cómo relaciono texto.html con captcha.php por qué no me salió el captcha en el formulario (solo la x roja).

2. ¿Qué significa darle permisos 777 para que sea editado el texto.txt, xDDD?????? Habla castellano que eso me suena a chino.

Por favor, JUCOCAN, te agradecería que me respondieras ya que necesito ese formulario que está preciso con su captcha. Saludos :D :D :D
ATRÉVETE A VIVIR SIN VIOLENCIA
ya han pasado muchos meses pero..
¿podrias explicarlo para los que seguimos PASO A PASO? es que me gustaria incluirlo en mi pagina pero de momento solo uso el kit y muchas veces no muy bien :(
en fin consideralo como la buena accion navideña jajajaja.

bueno, saludos y feliz año.
Primero que nada gracias por el tiempo y la molestia de mi mensaje lo que pasa es que soy demasiado nuevo en esto de html
Pero necesito crear una pagina que tome datos que escriba el usuario y los guarde en un archivo txt
Llevo hasta ahora esto...........



<html>
<body text="BLACK" size="1">

<FORM method=get action="registro de detalles.txt">
Agregar Nuevos Detalles a La Torre
<TABLE BORDER=0>

<TR>
<TD>Departamento</TD>
<TD>
<INPUT type=text name="departamento">
</TD>
</TR>

<TR>
<TD>Nuevo Detalle</TD>
<TD>
<SELECT name="nuevo detalle">
<OPTION VALUE="cancel">Cancel</OPTION>
<OPTION VALUE="fijos">Fijos</OPTION>
<OPTION VALUE="puerta">Puertas</OPTION>
<OPTION VALUE="triangulo">Triangulo</OPTION>
<OPTION VALUE="antepecho">Antepecho</OPTION>

<OPTION VALUE="sello negro">Sello Negro</OPTION>
<OPTION VALUE="sello transparente">Sello Transparente</OPTION>
<OPTION VALUE="tubo de remate">Tubo de remate</OPTION>
<OPTION VALUE="espejo faldon">Espejo faldon</OPTION>
<OPTION VALUE="espejos">Espejos</OPTION>

<OPTION VALUE="angulo baño">Angulo Baño</OPTION>
<OPTION VALUE="angulo closet">Angulo Closet</OPTION>
<OPTION VALUE="tapa gas frente">Tapa De Gas Frente</OPTION>
<OPTION VALUE="tapa gas atras">Tapa De Gas Atras</OPTION>
<OPTION VALUE="dientes de sierra">Dientes De Sierra</OPTION>

<OPTION VALUE="pecera">Pecera</OPTION>
<OPTION VALUE="herrajes">Herrajes</OPTION>
</SELECT>
</TD>
</TR>

<TR>
<TD COLSPAN=2>
<INPUT type="submit" value="Guardar">
</TD>
</TR>
</TABLE>
</FORM>
</body>
</html>

am alguien me puede ayudar o darme una referencia en que estoy mal
gracias por todo