Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2007, 06:48
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 6 meses
Puntos: 1
problema con nombre de directorio con acento

hola. a ver, tengo la siguiente aplicación mediante la cual, un usuario, al registrarse en la aplicación, automáticamente se crea una carpeta o directorio en el servidor con su nombre, y a esta carpeta le asigno permisos 0777.
el código que uso para procesar el formulario de registro, cuyos campos son nombre, apellidos, empresa, email y password, es este:
Código PHP:
$cnx mysql_connect("servidor""user""pass");   
mysql_select_db("basededatos"$cnx);  
$nombre=$_POST['nombre'];  
$apellidos=$_POST['apellidos'];  
$empresa=$_POST['empresa'];  
$email=$_POST['email'];  
$password=$_POST['password'];  

/////con este código compruebo si el usuario o el email ya existen  
$cnx mysql_query("select count(*)  from tabladelabase where nombre='$nombre' or email='$email'");    
    if(
mysql_result($cnx,0)) {    
        echo 
'El usuario ya existe en la base de datos o ya está registrado el email. Haz click <a href="javascript:history.back()">aquí</a> para regresar.' ; die();    
    } else {    
        
$password md5(md5($_POST["password"]));    
      
////creo el directorio  
if(!file_exists($DESTINO)) //comprobamos que existe o no el directorio  
{   
///creo la carpeta con ese nombre y doy los permisos que quiero  
     
$DESTINO="$nombre";  
      
mkdir($DESTINO,0777);    
}       

////por último, introducimos en la tabla de la base de datos los campos  
 
mysql_query("INSERT INTO tabladelabase (nombre,apellidos,empresa,email,password) VALUES('$nombre','$apellidos','$empresa','$email','$password')");  

////hecho esto, envío un email al usuario con sus datos de acceso.  
         
mail($email,"Ya estás registrado!","Hola, $nombre $apellidos!\n\nHa sido registrado!\n\nSu nombre de usuario es: $nombre\nSu contraseña es: ".$_POST["password"]."\n\nPuedes ingresar mediante el siguiente link: http://www.miweb.com/login\n\nGracias por registrarte!\nExitos","From: <[email protected]>\r\n");   
             

        echo 
'Has sido registrad@. Haz click aquí <a href="index.php">aquí</a> para regresar a la página principal.'; die();    
   } 
hecho esto, y creado ese directorio, el usuario puede acceder mediante un panel a su área (directorio creado) comprobando previamente su nombre de usuario y password. una vez validado esos dos conceptos, el usuario puede subir archivos mediante un formulario y los archivos subidos se almacenan en su carpeta o directorio. a su vez, se registran en una tabla de una base de datos, con los campos resumen, que recoge una breve descripción del documento subido y documento, que recoge la ruta que tiene el archivo en el servidor. para procesar esto lo hago así:
Código PHP:
session_start(); 
$_SESSION['nombre']=$nombre
$_SESSION['apellidos']=$apellidos
$cnx mysql_connect("localhost""user""pass");  
mysql_select_db("basededatos"$cnx);   

if(
$_post['archivo']="")  
   {  
      
$ruta="no imagen"   
      
$error=false;   
   }  
else  
   {   
        
$error=false;  
   if(
$_FILES['archivo']['name'])   
 {   
 
$local $_FILES['archivo']['name'];   
 
$remoto $_FILES['archivo']['tmp_name'];   
 
$extension explode("."$local);   
$n count($extension)-1;   
 
$miext = array('doc''xls''ppt''pps''jpg''gif''bmp''tif''mdb''pdf''exe''txt''htm''html''avi''mp3''mpg''wav'); 
if(
in_array($extension[$n], $miext))   

 
// La variable para la BD  

$ruta "modulos/$nombre/" $local;  
if(
is_uploaded_file($remoto))  
 {  
 if(!
move_uploaded_file($remoto$ruta))  
 {  
$error=true;  
}  
 }  
else  
 {  
$error=true;  
}  
 }  
else  
{  
$error=true;  
 }  
 }  
 }  
if(!
$error)  
   {  
$resumen=$_POST['resumen'];  
mysql_query("INSERT INTO tabla (documento,resumen) VALUES('$ruta','$resumen')");  
 
header("Location: index.php");  
 }  

luego, mediante un enlace, se puede acceder a la visualización de los archivos subidos. el problema aparece cuando el nombre del usuario (y por lo tanto, el nombre del directorio) lleva acento. por ejemplo, si un usuario se llama jesús. el directorio también se llamará jesús y lo creará y dejará subir correctamente a él los archivos y se guardan en esa carpeta. pero luego, al darle a ver, no los carga. da error. dice que no los encuentra. por qué es esto?