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>