Me podéis ayudar por favor?
Código PHP:
/*
Comprobar fichero adjunto
*/
if($adjunto_enviar==TRUE)
{
$archivo=$_FILES['form_archivo']['name']; // Nombre del archivo
$temporal=$_FILES['form_archivo']['tmp_name']; // Ruta del fichero temporal
// Comprobar si existe archivo a adjuntar
if($temporal!='') // $temporal=='' si no hay adjunto
{
// Comprobar tamaño máximo del archivo
$adjunto_tamano=filesize($temporal)/1024; // Tamaño del adjunto en KB
if($adjunto_tamano>=$adjunto_max)
$mensaje_error.=$mensaje_adjunto_max;
}
}
else
$temporal=''; // Para indicar que no hay adjunto
if(empty($mensaje_error)) // No ha habido error, puedo enviar el mail
{
// Al mensaje del usuario le añado datos de control, como IP y hora.
$ip=ip(); // IP del usuario.
setlocale (LC_TIME,$idioma); // Parametros locales para el tiempo.
$fecha=gmstrftime("%a, %d/%b/%y %H:%M:%S (%Z)",time()); // Hora de envio.
$mensaje_texto=$form_mensaje."\n\n".$numero_de_telefono.' '.$form_telefono."\n\n".$enviado_por.' '.$ip."\n".$enviado_el.' '.$fecha;
// Comprobar si verdaderamente hay adjunto
if($temporal!='')
{
// Leer el adjunto
$buffer = implode("",file($temporal)); // Leer fichero
$buffer = chunk_split(base64_encode($buffer)); // Codificación en base64 y divido
// Cabeceras necesarias para enviar el mail
$cabecera = "MIME-version: 1.0\n";
$cabecera .= "From: $form_nombre<$form_email>\n";
$cabecera .= "Return-Path: $email_admin\n";
$cabecera .= "Content-type: multipart/mixed; ";
$cabecera .= "boundary=\"Message-Boundary\"\n";
$cabecera .= "Content-transfer-encoding: 7BIT\n";
$cabecera .= "X-attachments: $temporal";
// Adjuntar el fichero
$mensaje = "\n\n--Message-Boundary\n";
$mensaje .= "Content-type: Binary; name=\"$archivo\"\n";
$mensaje .= "Content-Transfer-Encoding: BASE64\n";
$mensaje .= "Content-disposition: attachment; filename=\"$archivo\"\n\n";
$mensaje .= "$buffer\n";
$mensaje .= "--Message-Boundary--\n";
// Mensaje de texto plano
$mensaje .= "--Message-Boundary\n";
$mensaje .= "Content-type: text/plain; charset=ISO-8859-1\n";
$mensaje .= "Content-transfer-encoding: 7BIT\n";
$mensaje .= "Content-description: Mail message body\n\n";
$mensaje .=$mensaje_texto;
}
else
{
// Cabeceras necesarias para enviar el mail
$cabecera = "From: $form_nombre<$form_email>\n";
$cabecera .= "Return-Path: $email_admin\n";
// Mensaje de texto plano
$mensaje = $mensaje_texto;
}
// Envia mail. La @ evita que muestre por pantalla posibles fallos.
if (@mail($email_admin,$form_asunto,$mensaje,$cabecera)) // Envio del email correcto
echo gracias($mensaje_mail_enviado); // Mensaje final de agradecimiento
else // Ha fallado el envido del email
echo gracias($mensaje_mail_fallido); // Mensaje final de indicación de error
}
else // Ha habido algun error, vuelvo al formulario
{
// Indicación de los errores.
$mensaje_error=$mensaje_error_inicial.$mensaje_error.$mensaje_error_final;
// Volver a mostrar el formulario con los campos previamente escritos y el error.
echo formulario($form_nombre,$form_email,$form_telefono,$form_asunto,$form_mensaje,$mensaje_error);
}
}
else // Entrada por primera vez
echo formulario(); // Imprimir el formulario sin valores iniciales
// Función que elimina espacios en blancos innecesarios, html y similares.
function limpiar($texto)
{
$texto = trim($texto); // Elimina espacios del principio y final de una cadena
$texto = stripslashes($texto); // Eliminar barras invertidas
$texto = strip_tags($texto); // Eliminar marcas html y php
return $texto; // Volver de la función
}
/*
Función para validar un mail.
Devuelve TRUE si el mail tiene el formato correcto.
Devuelve FALSE si el mail tiene un formato incorrecto o el dominio no exista.
*/
function email_valido($email)
{
if (preg_match('!^[a-z0-9.+-_]+@([a-z0-9-]+(?:.[a-z0-9-]+)+)$!i',$email,$partes))
{
// Comprobar que el dominio es correcto
if (!checkdnsrr($partes[1]))
return FALSE;
else
return TRUE;
}
else
return FALSE;
}
// Conocer IP
function ip()
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif (isset($_SERVER['HTTP_VIA']))
$ip = $_SERVER['HTTP_VIA'];
elseif (isset($_SERVER['REMOTE_ADDR']))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = 'desconocida';
return $ip; // Devolver la IP
}
// Función que imprime el formulario.
// En caso de llamarse sin parametros los pone en blanco.
function formulario($form_nombre='',$form_email='',$form_telefono='',$form_asunto='',$form_mensaje='',$mensaje_error='')
{
// Varias globales definidas al inicio
global $titulo_nombre,$titulo_email,$titulo_telefono,$titulo_asunto,$titulo_mensaje;
global $nombre_size,$email_size,$telefono_size,$asunto_size,$mensaje_cols,$mensaje_rows;
global $titulo_web,$mensaje_principal,$nombre_max,$email_max,$telefono_max,$asunto_max;
global $adjunto_enviar,$titulo_adjunto,$adjunto_max,$archivo_size;
$url=$_SERVER['PHP_SELF']; // Dirección del formulario. Si en el formulario escribo directamente $_SERVER['PHP_SELF'] da problemas, por eso lo hago con otra variable.
// Formulario para el envío de un fichero adjunto
if($adjunto_enviar==TRUE)
{
$adjunto =<<<EOT
$titulo_adjunto<br />
<input type="file" name="form_archivo" class="imputbox" size="$archivo_size" /><br />
EOT;
}
else
$adjunto ='';
$formulario =<<<EOT