Buenos días,
estoy trabajando en un formulario de contacto que además adjunta un archivo. Funciona correctamente, pero al pulsar el botón enviar me sale el mensaje de que el formulario ha sido enviado correctamente, en una página en blanco, y ya no vuleve a la página del formulario. No sé como hacer que ese mensaje me aparezca debajo del botón enviar.
Pongo aquí el código por si fuera necesario:
archivo "enviar_mail.php"
<?php
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";
$sCuerpo = $sTexto;
$sSeparador = uniqid("_Separador-de-datos_");
$sCabeceras = "MIME-version: 1.0\n";
// Recogemos los campos del formulario
foreach ($_POST as $sNombre => $sValor)
$sCuerpo = $sCuerpo."\n".$sNombre." = ".$sValor;
// Recorremos los Ficheros
foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
// Hay ficheros
$bHayFicheros = 1;
// Cabeceras generales del mail
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"".$sSeparador."\"\n";
// Cabeceras del texto
$sCabeceraTexto = "--".$sSeparador."\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
$sCuerpo = $sCabeceraTexto.$sCuerpo;
}
// Se añade el fichero
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n--".$sSeparador."\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
$oFichero = fopen($vAdjunto["tmp_name"], 'rb');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}
// Si hay ficheros se añaden al cuerpo
if ($bHayFicheros)
$sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
// Se añade la cabecera de destinatario
if ($sDe)$sCabeceras .= "From:".$sDe."\n";
// Por último se envia el mail
return(mail($sPara, $sAsunto, $sCuerpo, $sCabeceras));
}
//Ejemplo de como usar:
/*if (form_mail("
[email protected]",
"Activación de formulario",
"Los datos introducidos en el formulario son:\n",
"
[email protected]"))
echo "Su formulario ha sido enviado con exito";*/
// Ejemplo de como usar, poniendo como remitente el campo pasado de E-mail
if (form_mail("
[email protected]",
"Activación de formulario",
"Los datos introducidos en el formulario son:\n",
$_POST["E-mail"]))
echo "<script language='javascript'>";
echo "Su formulario ha sido enviado con exito";
echo 'history.back()';
echo "</script>";
?>
y este es el del form:
<form name='formulario' id='formulario' method='post' action='enviar_mail.php' enctype="multipart/form-data">
<table width="50%" border="0" align="left" cellpadding="10" cellspacing="0" style="color:#FFF">
<tr>
<td><p>Nombre</p></td>
<td><p><input type='text' name='Nombre' id='Nombre'></p></td>
<td> </td>
</tr>
<tr>
<td><p>Apellidos</p>
<td><p><input type='text' name='Apellidos' id='Apellidos'></p></td>
<td> </td>
</tr>
<tr>
<td><p>E-mail</p></td>
<td><p><input type='text' name='E-mail' id='E-mail'></p></td>
<td> </td>
</tr>
<tr>
<td><p>Adjuntar curriculum</p></td>
<td><p><input type='file' name='archivo1' id='archivo1'></p></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><p><input type='submit' value='Enviar'></p></td>
<td><p><input type='reset' value='Borrar'></p></td>
</tr>
</table>
</form>
Gracias y saludos.