Foros del Web » Programando para Internet » PHP »

Adjuntar un archivo con este formulario

Estas en el tema de Adjuntar un archivo con este formulario en el foro de PHP en Foros del Web. Hola, He realizado un formulario como éste: Código PHP: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <script type="text/javascript" src="../scripts/validador.js"></script>      <link href="../css.css" rel="stylesheet" type="text/css"> </head> <body> <table width="700" border="0" align="center" bordercolor="#000000">   <tr>     <td><table width="700" border="0">         <tr>           <td width="1">&nbsp;</td>           <td colspan="3"> ...
  #1 (permalink)  
Antiguo 17/01/2009, 12:13
 
Fecha de Ingreso: noviembre-2008
Mensajes: 48
Antigüedad: 15 años, 5 meses
Puntos: 1
Adjuntar un archivo con este formulario

Hola,

He realizado un formulario como éste:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

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

<title></title>

<script type="text/javascript" src="../scripts/validador.js"></script>
    

<link href="../css.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="700" border="0" align="center" bordercolor="#000000">
  <tr>
    <td><table width="700" border="0">
        <tr>
          <td width="1">&nbsp;</td>
          <td colspan="3">
            <img src="img/cabecera.png" width="657" height="77" border="0">
          <hr class="hr">          </td>
          <td width="1">&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td colspan="3">
            <table width="700">
              <tr>
              <td width="657" align="center"><font class="titulos">formulario de registro</font></td></tr>
              <tr>
                <td width="657" align="center">
                  
                  <?
function comprova_obligatoris($array) {
    GLOBAL 
$HTTP_POST_VARS;
    
    
$camps_buits=array();
    foreach (
$array as $camp_oblig){
        if (!isset(
$HTTP_POST_VARS[$camp_oblig]) || ($HTTP_POST_VARS[$camp_oblig]=="")) {
            
$camps_buits[]=$camp_oblig;
        }
    }
    return 
$camps_buits;
}


$array_oblig = array ("nombre""apellidos""email""cp""pais""telefono""trabajo""acepto");
$buits comprova_obligatoris($array_oblig);

if (!isset(
$HTTP_POST_VARS['ENVIAT']) || (isset($HTTP_POST_VARS['ENVIAT']) && (count($buits)!=0))){
    if (isset(
$HTTP_POST_VARS['ENVIAT']) && (count($buits)!=0)){
        
$camps"";
        foreach (
$buits as $camp_buit){
            if (
$camps != ""$camps .= ", ";
            
$camps .= $camp_buit;
        }
        echo 
'<div class="campos_obligatorios" style="width: 700px; position:relative; left:156px;" align="center">Los campos marcados con un asterisco (*) son obligatorios.</div>';
    }
?>
                  
  <form action="" method="POST" enctype="multipart/form-data" name="nombrevalidador">
  <input type="hidden" name="ENVIAT" value"OK" />
    
  <table width="657" border="0" class="textocontenidos">
    <tr>
      <td><font class="asteriscos">*</font> Nombre:<br><input type="text" name="nombre" size=47 class="combo"></td>
      <td><font class="asteriscos">*</font> Apellido(s):<br><input type="text" name="apellidos" size=47 class="combo"></td>
    </tr>
    <tr>
      <td><font class="asteriscos">*</font> Correo electrónico:<br><input type="text" name="email" size=47 class="combo"></td>
      <td>URL:<br><input type="text" name="url" size=47 class="combo" value="http://"></td>
    </tr>
    <tr>
      <td>Dirección:<br><input type="text" name="direccion" size=47 class="combo"></td>
      <td><font class="asteriscos">*</font> Código Postal:<br><input type="text" name="cp" size=47 class="combo"></td>
    </tr>
    <tr>
      <td>Localidad:<br><input type="text" name="localidad" size=47 class="combo"></td>
      <td>Provincia:<br><input type="text" name="provincia" size=47 class="combo"></td>
    </tr>
    <tr>
      <td><font class="asteriscos">*</font> País:<br><select name="pais" class="combo"> 
  <option value="">-- Elija --
  <option value="xx">España
    </select></td>
    <td>Archivo adjunto: <br><input type="file"></select></td>
    </tr>
    <tr>
      <td><font class="asteriscos">*</font> Número de teléfono:<br><input type="text" name="telefono" size=47 class="combo"></td>
      <td>Otro número de teléfono:<br><input type="text" name="otrotelefono" size=47 class="combo"></td>
    </tr>
    <tr>
    </tr>
  </table>
  <table class="textocontenidos" width="657">
    <tr>
      <td>Comentarios:<br><textarea name="comment" cols=100 rows=6 class="combo" onFocus='this.value=""'>Indique sus comentarios</textarea></td>
    </tr>
  </table>
  
<table width="657" class="textocontenidos">
  <tr>
    <td><input type="checkbox" name="acepto" value="Acepto" class="combo"> Mis datos son correctos</font></td>
     </tr>
  <tr>
    <td align="center"><input type="submit" value="Enviar" class="combo2"></td>
      </tr>
  <tr>
    <td><div id='nombrevalidador_errorloc' class='error_strings'>
      </div></td>
    </tr>
  </table>
</form>
  

  <script language="JavaScript" type="text/javascript">
//You should create the Validator only after the definition of the HTML form
  var variablescript  = new Validator("nombrevalidador");
 variablescript.EnableOnPageErrorDisplaySingleBox();
 variablescript.EnableMsgsTogether();
 
  variablescript.addValidation("nombre","req","El nombre es obligatorio");
  variablescript.addValidation("nombre","maxlen=20",    "El nombre puede tener 20 caracteres como máximo");
  variablescript.addValidation("nombre","alpha_s","El nombre sólo puede contener caracteres");
  
  variablescript.addValidation("apellidos","req","Tienes que introducir por lo menos un apellido");
  variablescript.addValidation("apellidos","maxlen=40","El apellido puede contener un máximo de 40 caracteres");
  
  variablescript.addValidation("email","maxlen=50");
  variablescript.addValidation("email","req","Tienes que introducir un e-mail válido");
  variablescript.addValidation("email","email","Tienes que introducir un e-mail válido");
  
  variablescript.addValidation("cp","maxlen=10");
  variablescript.addValidation("cp","req","Tienes que introducir un Código Postal válido");
  variablescript.addValidation("cp","alnum_s","Tienes que introducir un Código Postal válido");
  
  variablescript.addValidation("pais","req","El país es obligatorio");
  
  variablescript.addValidation("telefono","maxlen=20");
  variablescript.addValidation("telefono","req","Tienes que introducir un número de teléfono válido");
  variablescript.addValidation("telefono","num","Tienes que introducir un número de teléfono válido (sólo números)");
    
  variablescript.addValidation("acepto","shouldselchk","Tienes que aceptar antes de enviar");
</script>
                  
                  
                  
  <?
}else{
    
//Estoy recibiendo el formulario, compongo el cuerpo
    
$cuerpo "Formulario enviado:\n\n";
    
$cuerpo .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpo .= "Apellidos: " $HTTP_POST_VARS["apellidos"] . "\n";
    
$cuerpo .= "E-mail: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpo .= "Teléfono: " $HTTP_POST_VARS["telefono"] . "\n";
    
$cuerpo .= "Otro teléfono: " $HTTP_POST_VARS["otrotelefono"] . "\n";
    
$cuerpo .= "Página web: " $HTTP_POST_VARS["url"] . "\n\n";
    
$cuerpo .= "Dirección: " $HTTP_POST_VARS["direccion"] . "\n";
    
$cuerpo .= "CP: " $HTTP_POST_VARS["cp"] . "\n";
    
$cuerpo .= "Localidad: " $HTTP_POST_VARS["localidad"] . "\n";
    
$cuerpo .= "Provincia: " $HTTP_POST_VARS["provincia"] . "\n";
    
$cuerpo .= "País: " $HTTP_POST_VARS["pais"] . "\n\n";

    
$cuerpo .= "\n";
    
    
$cuerpo .= "Comentarios: " $HTTP_POST_VARS["comment"] . "\n\n";
    
    
//traducimos el cuerpo del mensaje para el email que recibirá el usuario
    
$cuerpotrans .= "Nombre: " $HTTP_POST_VARS["nombre"] . "\n";
    
$cuerpotrans .= "Apellidos: " $HTTP_POST_VARS["apellidos"] . "\n";
    
$cuerpotrans .= "E-mail: " $HTTP_POST_VARS["email"] . "\n";
    
$cuerpotrans .= "Teléfono: " $HTTP_POST_VARS["telefono"] . "\n";
    
$cuerpotrans .= "Otro teléfono: " $HTTP_POST_VARS["otrotelefono"] . "\n";
    
$cuerpotrans .= "Página web: " $HTTP_POST_VARS["url"] . "\n\n";
    
$cuerpotrans .= "Dirección: " $HTTP_POST_VARS["direccion"] . "\n";
    
$cuerpotrans .= "CP: " $HTTP_POST_VARS["cp"] . "\n";
    
$cuerpotrans .= "Localidad: " $HTTP_POST_VARS["localidad"] . "\n";
    
$cuerpotrans .= "Provincia: " $HTTP_POST_VARS["provincia"] . "\n";
    
$cuerpotrans .= "País: " $HTTP_POST_VARS["pais"] . "\n\n";

    
$cuerpotrans .= "\n";
    
    
$cuerpotrans .= "Comentarios: " $HTTP_POST_VARS["comment"] . "\n";

    
    
//recibimos el e-mail con los datos
    
$headers $HTTP_POST_VARS[email];
    
mail("[email protected]","Nuevo mail recibido",$cuerpo"From: ".$headers);

    
//doy las gracias por el envío
    
echo '<div class="textocontenidos">Hola '.$HTTP_POST_VARS["nombre"].', <br><br> Hemos recibido correctamente tus datos.</div>';
    
    
    
//enviamos e-mail automatico de confirmacion de registro
    
$para $HTTP_POST_VARS[email];
$asunto "Registro correcto";
$mensaje "Hola $nombre, \n\nÉste es un sistema automático";

$de "[email protected]";
mail($para$asunto$mensaje"From: ".$de);
        
}
?>                </td>
              </tr>           
          </table></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td colspan="3" align="center"><hr class="hr"></td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          

          <td width="496" align="center" valign="middle"><font class="letrapiecorp">©</font><br>
          </td>
          <td width="79" align="right" valign="top"><font class="letrapie"><a class="linkpienota" href="notalegal.html" title="nota legal">nota legal</a></font></td>
          <td>&nbsp;</td>
        </tr>
      </table>    </td>
  </tr>
</table>

</body>
</html>
Con este formulario recibo en mi e-mail todos los datos que me ha indicado el usuario automáticamente, excepto el archivo adjunto que me envía, del que sólo consigo que mi e-mail reciba el nombre del archivo, pero no el archivo en sí.

Sin tener que cambiar demasiado el formulario, ¿existe alguna forma en que yo pueda implementar esta funcionalidad para poder recibir yo en mi e-mail el archivo adjunto que el usuario añada, igual que el resto de sus datos?

Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 17/01/2009, 13:56
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Adjuntar un archivo con este formulario

agregar un archivo no es del todo sencillo pq no es algo que venga de manera nativa, te sugiero que busques la clase phpmailer en google y envies los mails con tu adjunto gracias a ella
es muy simple de usar
saludos
__________________
Degiovanni Emilio
developtus.com
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 16:05.