Foros del Web » Programando para Internet » PHP »

Formulario php para generar firma de correo en HTML que descargue el usuario

Estas en el tema de Formulario php para generar firma de correo en HTML que descargue el usuario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/04/2016, 05:54
 
Fecha de Ingreso: abril-2016
Mensajes: 6
Antigüedad: 8 años
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
  #2 (permalink)  
Antiguo 28/04/2016, 01:24
 
Fecha de Ingreso: abril-2016
Mensajes: 6
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario php para generar firma de correo en HTML que descargue el usuar

Umm parece que he encontrado el motivo de mi problema. Según http://php.net/manual/es/function.fwrite.php además de escribir el fichero la función devuelve el número de bytes escritos que es lo que se me muestra por pantalla.

¿Existe alguna otra función o alguna manera de ocultar con fwrite con devuelva el
número de bytes escritos?
  #3 (permalink)  
Antiguo 28/04/2016, 02:44
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Formulario php para generar firma de correo en HTML que descargue el usuar

Simplemente elimina los echo.


Código PHP:
Ver original
  1. <?php
  2. fwrite($fichero, '<html>' .PHP_EOL);                            
  3. fwrite($fichero, '<head>' .PHP_EOL);
  4. fwrite($fichero, ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' .PHP_EOL);
  5. fwrite($fichero, ' <title>Grupo Inprex: Firma de Correo</title>' .PHP_EOL);
  6. fwrite($fichero, ' <style type="text/css">' .PHP_EOL);
  7. fwrite($fichero, '  a {' .PHP_EOL);
  8. fwrite($fichero, '   color: #69be28;' .PHP_EOL);
  9. fwrite($fichero, '  }' .PHP_EOL);
  10. fwrite($fichero, ' </style>' .PHP_EOL);    
  11. fwrite($fichero, '</head>' .PHP_EOL);
  12. fwrite($fichero, '<body>' .PHP_EOL);
  13. // Para poder escribir el contenido de las variables tengo que entrecomillar el parámetro de la cadena
  14. // con '"', escapar las comillas dobles con una '\'y escribir con '$' el nombre de la variable en la cadena                                
  15. 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);
__________________
Unset($vida['malRollo']);
  #4 (permalink)  
Antiguo 29/04/2016, 06:00
 
Fecha de Ingreso: abril-2016
Mensajes: 6
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario php para generar firma de correo en HTML que descargue el usuar

Muchas gracias xerifandtomas. Con tus indicaciones ya funciona perfectamente esa parte del código y no se me muestran los números.

Solo ya me queda controlar bien que se pueda descargar el fichero con el enlace con JavaScript que no lo hago correctamente. He puesto que al cargarse la página se oculte el enlace y quiero que cuando pulse enviar lo pueda descargar el usuario (pero no se mantiene fijo). Dejo aquí el código.

Cabecera del HTML:
Código PHP:
<head>

    <
meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <
title>Firma digital</title>

    

    <
script>

       
// Se carga al abrir la página

        
window.onload=function()

        {

            
document.getElementById("enlace").style.display='none';        

        }



        function 
activa_enlace(){

            
document.getElementById("enlace").style.display='block';    

        }

    
</script>    

</head> 
Parte del código PHP dónde llamo a la función después de haber guardado y cerrado el archivo con el código HTML. Va detrás del fclose que cierra el fichero. No pongo el código completo porque supera el´límitemáximo de 10.000 caracteres

Código PHP:
echo '<script type="text/javascript">';
echo 
' activa_enlace()';
echo 
'</script>' 

Etiquetas: javascript+html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:36.