El script lo que hace es coger un archivo, cambiar el formato del nombre para eliminar caracteres especiales, subirlo al servidor y enviar un mail con el enlace, el problema es que en el enlace algunas veces aparecen los caracteres %0d%0a en el nombre del archivo, esto se interpreta como un intro en el navegador y el enlace falla.
Explico un poco el código que tengo:
Esta es la función que limpia los carateres especiales:
Código PHP:
function LimpiaEspacios($CadenaConMuchosEspacios)
{
$CadenaConMuchosEspacios= strtolower($CadenaConMuchosEspacios); //pasa a minusculas
$CadenaConMuchosEspacios= trim($CadenaConMuchosEspacios); //eliminamos todos los espacios que estan antes y despues de la cadena
$CadenaRegulada= ereg_replace( "[^a-z0-9_.]", "", $CadenaConMuchosEspacios);
return $CadenaRegulada;
}
Código PHP:
//recoge el contenido de los input file - una linea por cada archivo
$archivo = $_FILES["archivo"]["name"];
$archivo_sin_espacios = LimpiaEspacios($archivo);
//comprueba si se ha añadido archivo
if($archivo!=""){
//define ruta de destino
$destino = 'archivos/'.$archivo_sin_espacios;
//sube el archivo al directorio /archivos
copy($_FILES["archivo"]["tmp_name"], $destino);
//variable para mostrar el nombre de los archivos adjuntos
$adjuntos .= $archivo_sin_espacios;
}
else $destino="";
Código PHP:
if ($adjuntos!="") {
$_SESSION["foot"] .= "<br><b>Adjunto:</b> <a href='descarga.php?id=".$adjuntos."' target='_blank'><b>".$adjuntos."</b></a>";
}
Agradecería cualquier sugerencia.
Muchas gracias. Saludos