Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2016, 05:54
mermoj
 
Fecha de Ingreso: abril-2016
Mensajes: 6
Antigüedad: 8 años, 10 meses
Puntos: 1
Formulario php para generar firma de correo en HTML que descargue el usuario

Un saludo a todos. Soy un nuevo miembro del foro y me llamo Germán.

La idea es un pequeño formulario php que controla la inclusión de datos con HTML5, para generar una firma HTML de correo que se guardeen un archivo.

Tengo 2 grandes dudas:

- Cuando pulso enviar en el formulario me aparecen números tras almacenar los datos y generar el archivo HTML. Cuando he estado revisando el código, se generan los números cuando abro el archivo e inserto código HTML con la función echo.

- Al iniciar el formulario creo un enlace, que lo oculto con javascript, pero cuando pulso enviar trato de insertar código JavaScript para que sea visible sin éxito

Código PHP:
<!DOCTYPE html>

<head>
    <meta charset="UTF-8" />
    <title>Firma digital</title>
    
    <script>
       // Se carga al abrir la página
        window.onload=function()
        {
            document.getElementById("enlace").style.display='none';        
        }
    </script>
    
</head>

<body>    
        <h1>Crea tu propia firma digital</h1>
        <!-- Si devuelve onsubmit True validad el formulario -->
        <form action="Firma_digital.php" method="POST" name="form1">
            <!-- Primera fila -->
            <p>
                Nombre: 
                <input name="nombre" type="text" size="30" required />
                *
                                       
         </p>     
          <!-- Segunda fila -->
         <p>
                Apellidos: 
                <input name="apellidos" type="text" size="30" required />
                *                            
         </p>
           
            <!-- Tercera fila -->                
          
          <p>                 
                Teléfono:
                <input name="telefono" type="text" size="12" minlength="9" maxlength="9" required />
                *
            </p>
           
          <!-- Cuarta fila --> 
          <p>                 
                Correo:
                <input name="correo" type="text" size="40" required />
                *
          </p>
          
          <!-- Quinta fila -->
          <p>
                Puesto:
                <select name="puesto" size="1" required>
                 // No asigno valor a value para que el select sea requerido en HTML5
                 // Dejo por defecto opción por 'Seleccione un puesto' y deshabilitada
                  <option selected="selected" disabled="disabled" value="">-- Seleccione un puesto --</option>
                  <option value="1">Administrativo</option>
                  <option value="2">Comercial</option>
                  <option value="3">Director de departamento</option>
                  <option value="4">Director de oficina</option>
                  <option value="5">Financiero</option>
                  <option value="6">Médico</option>
                  <option value="7">Prácticas</option>
                  <option value="8">Recursos Humanos</option>
                  <option value="9">Técnico Prevención de Riesgos Laborales</option>
                  <option value="10">Técnico de Sistemas y TI</option>
                  <option value="11">Vigilancia de la Salud</option>                 
                </select>
                * 
            </p>                                      
                
          <!-- Sexta fila -->
          <p>
              <input name="enviar" type="submit" value="Enviar" required />
          </p> 
          <p>
          <!-- Séptima fila: enlace para descargar el fichero -->
          <p>
                <a id="enlace" href="firma.html" download="firma nombre apellidos.html">Descargar firma</a>
          </p>              
                            
        </form>
        
        <?php
             
// Se obtienen valores cuando se pulsa en el botón Enviar cuando se han rellenado
             //correctamente los datos del formulario
                 
if($_POST){                            
                               
$nombre $_POST['nombre'];
                             
$apellidos $_POST['apellidos'];
                           
$telefono $_POST['telefono'];
                             
$correo $_POST['correo'];
                                
                                
// Comprobaciones                             
                             // echo"<br>";
                             // echo"$nombre $apellidos $telefono $correo";
                             
                             // Creo un array para a partir del índice del array del puesto y 

                                // el valor del option del select del html obtener el puesto seleccionado

        

                                
$puestos = array ("Administrativo","Comercial","Director de departamento","Director de oficina",
                                                   
"Financiero","Médico","Prácticas","Recursos Humanos",
                                                   
"Técnico Prevención de Riesgos Laborales","Técnico de Sistemas y TI",
                                                   
"Vigilancia de la Salud");
                                                   
                        
// Obtengo el valor del option del select seleccionado
                        // Resto 1 porque el índice del array en el que se almacenan
                        // los puestos empiezan por 0 y no por uno.                               
                               
$valor_puesto $_POST['puesto']-1;
                               
                                
// Comprobaciones                               
                               // echo"<br>";
                               // echo "$valor_puesto";
                               
                                // Obtengo el nombre del puesto                               
                               
$puesto $puestos[$valor_puesto];                           
                               
                                
// Comprobaciones                               
                               // echo "<br>";
                               // echo $puesto;
                               
                               
                               // Inserto los datos del formulario en el fichero firma.html

        

                                // Abro un nuevo fichero si no existe sin preservar datos; en caso contrario, muestro error

                                
$fichero fopen("firma.html","w") or die("No se puede abrir el fichero");
                                
                                
// Escribo en el fichero el contenido html de la firma digital línea por línea
                                
                                // PHP_EOL (end of line) introduce un salto de línea en PHP. Mediante la concatenación con un punto 
                                // forzamos el salto de línea después del texto introducido.
                                                                
                                // DOCTYPE de HTML5                               
                               // echo fwrite($fichero,'<!DOCTYPE html>\n');
                                                            
                            
                                
echo fwrite($fichero'<html>' .PHP_EOL);                            
                                echo 
fwrite($fichero'<head>' .PHP_EOL);
                                echo 
fwrite($fichero' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' .PHP_EOL);
                                echo 
fwrite($fichero' <title>Grupo Inprex: Firma de Correo</title>' .PHP_EOL);
                                echo 
fwrite($fichero' <style type="text/css">' .PHP_EOL);
                                echo 
fwrite($fichero'  a {' .PHP_EOL);
                                echo 
fwrite($fichero'   color: #69be28;' .PHP_EOL);
                                echo 
fwrite($fichero'  }' .PHP_EOL);
                                echo 
fwrite($fichero' </style>' .PHP_EOL);
                                
                                echo 
fwrite($fichero'</head>' .PHP_EOL);
                                echo 
fwrite($fichero'<body>' .PHP_EOL);
                                
                                
                                
                                
// Para poder escribir el contenido de las variables tengo que entrecomillar el parámetro de la cadena
                                // con '"', escapar las comillas dobles con una '\'y escribir con '$' el nombre de la variable en la cadena                                
                                
echo fwrite($fichero"    <p align=\"center\"><font face=\"Calibri\" color=\"#999999\" style=\"font-size:16px;\"><b>$nombre $apellidos</b></font><br /><font face=\"Calibri\" color=\"#69be28\"><font face=\"Calibri\" style=\"font-size:14px;\"><b>$puesto</b></font><br /><font face=\"Calibri\" style=\"font-size:14px\"><strong><font color=\"#999999\">+34 $telefono</font></strong></br><a href=\"mailto:$correo\">$correo</a></font><br /></p>" .PHP_EOL);
                                                                                            
                                
// Cierro el fichero
                                
fclose($fichero);
                                                            
                                
// Inserto código JavaScript para hacer visible el enlace para descargarme
                                // el fichero html con la firma que se ha generado al pulsar el botón enviar
                                
echo '<script type="text/javascript"';
                                echo 
' document.getElementById("enlace").style.display="block"'
                                echo 
'</script>';
                                                                                                
                                
// Llave de cierre de if($_POST)    
                                  

        
?> 
</body>

</html>

Última edición por mermoj; 27/04/2016 a las 06:00