Fuccion, hojas en PHPEsta mañana mi colega iLLiCe me pidió que le echara una mano a crear un formulario para una de sus web y le pase el link de jotform en el que tengo el manual de como hacer el formulario, pero lógicamente le faltaba la parte de recepción. Querí­a pasar los datos resultantes del formulario a un archivo de texto plano, no a una base de datos, así­ que en 5 minuticos me he puesto y he echo la función receptor_a_archivo(). Esta función toma los datos recibidos por get y post y los escribe en el archivo que queramos. Tiene como añadido para mejorar la presentación 3 parámetros a partir de los cuales podemos determinar que texto o caracteres ponemos delante del nombre del campo ($delante), entre el nombre del campo y el valor del mismo ($entre_los_dos) y detrás del valor del campo ($detras). También como respuesta al enví­o de los datos muestra un mensaje de "Datos enviados con éxito.".
Os dejo un ejemplo de como se ejecutarí­a la función y que darí­a como resultado:

PHP:
  1. <?php
  2.  
  3.     receptor_a_archivo("log.html", "<b>", ":</b> ", "<br>\n");
  4. ?>

Esa función generará un archivo llamado log.html con este contenido:

HTML:
  1. <b>Elemento1:</b> Valor del elemento 1<br>
  2. <b>Elemento2:</b> Valor del elemento 2<br>
  3. <b>Elemento3:</b> Valor del elemento 3<br>
  4. <b>Elemento4:</b> Valor del elemento 4<br>

A continuación os dejo las dos funciones que se usan para hacerlo. Si queréis ver lo que hace la función archivo() está posteada anteriormente.

PHP:
  1. <?php
  2.  
  3. function receptor_a_archivo($nombre, $delante = "", $entre_los_dos = " = ", $detras = ""){
  4.     foreach($_GET as $key => $valor){
  5.         $escrito = archivo($nombre, "grabar", $delante.$key.$entre_los_dos.$valor.$detras);
  6.         if($escrito === FALSE){
  7.             echo "Error al insertar los datos, inténtelo mas tarde o pongas en contacto con el administrador. :)";
  8.             $error = "1";
  9.         } else {
  10.             echo $delante.$key.$entre_los_dos.$valor.$detras."\n";
  11.         }
  12.     }
  13.     foreach($_POST as $key => $valor){
  14.         $escrito = archivo($nombre, "grabar", $delante.$key.$entre_los_dos.$valor.$detras);
  15.         if($escrito === FALSE){
  16.             echo "Error al insertar los datos, intentélo mas tarde o pongas en contacto con el administrador. :)";
  17.             $error = "1";
  18.         } else {
  19.             echo $delante.$key.$entre_los_dos.$valor.$detras."\n";
  20.         }
  21.     }
  22.     if($error != "1"){
  23.         echo "\n<br>Datos enviados con éxito.";
  24.     }
  25. }
  26.  
  27. function archivo($nombre, $tipo, $texto="", $tamanio="") {
  28.     $tipo = strtolower($tipo);
  29.     $permiso = array('leer'=>'r','sustituir'=>'w+','grabar'=>'a+', 'borrar'=>'0');
  30.     if($permiso[$tipo] != '0'){
  31.         if($permiso[$tipo] == 'r'){
  32.             //leer
  33.             $read = @file_get_contents($nombre);
  34.             return $read;
  35.         } else {
  36.             //grabar
  37.             $fp = fopen($nombre,$permiso[$tipo]);
  38.             $read = fwrite($fp, $texto, $tamanio);
  39.             fclose($fp);
  40.             return $read;
  41.         }
  42.     } else {
  43.         $read = unlink($nombre);
  44.         return $read;
  45.     }
  46. }
  47. ?>

Una vez guardado el código en un archivo con extensión .php y indicado en nuestro formulario todo funcionará.