Foros del Web » Programando para Internet » PHP »

Carpeta por usuarios

Estas en el tema de Carpeta por usuarios en el foro de PHP en Foros del Web. Llevo un rato dandole vueltas,necesito que los usuarios al registrarse creen una carpeta con su mail que los identifique a ellos, y solamente ellos puedan ...

  #1 (permalink)  
Antiguo 05/11/2008, 10:43
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Carpeta por usuarios

Llevo un rato dandole vueltas,necesito que los usuarios al registrarse creen una carpeta con su mail que los identifique a ellos, y solamente ellos puedan tener acceso para depositar su Curriculum vitae y alguna foto.

Crear el directorio y eso si se hacerlo pero ... como evito que no entre otro usuario en ese directorio.
  #2 (permalink)  
Antiguo 05/11/2008, 10:52
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

Hola

al registrarse, creas variables de sesion con su nombre (unico)

y redireccionas

<?php session_start();
$user = $_SESSION['M_username'];

header( "Location: /carpetas/$user/" ); // Te redirecciona a /carpetas/pepe/
?>
  #3 (permalink)  
Antiguo 05/11/2008, 10:56
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Carpeta por usuarios

si trabajas con sesiones como propone jaronu, comprueba el usuario con ese dato, si no es el usuario no muestra nada
  #4 (permalink)  
Antiguo 05/11/2008, 11:04
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

si lo hago asi no entrara nadie a esa carpeta pepe?...

y si otro usuario pone en su navegador /carpeta/pepe entrara entonces ?
  #5 (permalink)  
Antiguo 05/11/2008, 11:19
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Carpeta por usuarios

mmmmm sí...

Pero para hacer eso debe conocer el nombre de la carpeta, por lo cual puedes nombre esa carpeta con un "rand" y el id del usuario(concatenarlos) pues para darle un poco mas de dificultad...

Pero como te digo si conocen tu sitio... nada que hacer

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 05/11/2008, 11:25
 
Fecha de Ingreso: noviembre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Carpeta por usuarios

Cita:
Iniciado por nfo Ver Mensaje
si lo hago asi no entrara nadie a esa carpeta pepe?...

y si otro usuario pone en su navegador /carpeta/pepe entrara entonces ?
Si.

Lo que puedes hacer es meter un index.php en cada carpeta, con una comprobacion de usuario. En caso de que no sea el usuario correcto, te tira al root o a otro sitio. Aunque eso no evitara que si saben el nombre del archivo puedan acceder al mismo. Puedes intentar disimular esto, dandole a cada usuario una carpeta que tenga un nombre en clave, al que asocias ese usuario.

Luego no se si hay formas de incluir una autentificacion a las carpetas. Se que puedes asignar contraseñas a carpetas en el servidor, pero eso ya depende de tu proveedor, y no se hasta que punto es practico o permite una estructuración dinamica.

Saludos!
  #7 (permalink)  
Antiguo 05/11/2008, 11:34
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

ajam.... he estado haciendo pruebecillas Autentificando el usuario es lo que andaba buscando pero es lo que tu dices si conozco el nombre del fichero puedo descargarlo, y eso tampoco lo quiero.
  #8 (permalink)  
Antiguo 05/11/2008, 11:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 45
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Carpeta por usuarios

nfo:

Lo que podrias hacer aparte de las recomendaciones de la comprobación de los usuarios es :

1- Crear uina carpeta fuera de la parte publica de tu disco , es decir en una carpeta a la que no se pueda acceder por url.
2-Luego para visualizar la imagen hacerlo a travez de la pagina php leer la imagen por codigo php y luego mostrarla , de esta manera no hay forma de que el usuario sepa cual es la url de la imagen.

No te mando el codigo necesario por que no conozco mucho de php pero si te digo que en otros lenguajes se puede hacer por lo que supongo que en php tambien.

Saludos
  #9 (permalink)  
Antiguo 05/11/2008, 11:45
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Carpeta por usuarios

Cita:
Iniciado por mjaramillo Ver Mensaje
nfo:
2-Luego para visualizar la imagen hacerlo a travez de la pagina php leer la imagen por codigo php y luego mostrarla , de esta manera no hay forma de que el usuario sepa cual es la url de la imagen.
Error... php se termina interpretando como html y lo podrán ver...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #10 (permalink)  
Antiguo 05/11/2008, 12:00
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por Carxl Ver Mensaje
Error... php se termina interpretando como html y lo podrán ver...

Saludos
toda la razón
  #11 (permalink)  
Antiguo 05/11/2008, 14:34
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

se me ha ocurido una cosa. podria hacer esto.

Cuando creo la carpeta por usuario, podria darle permisos 000 y luego cuando se autentifique y compruebe el usuario, darle permisos 777 a esa carpeta para que pueda verla modificar y editar su contenido.

Esto se podria hacer?

Se me ha ocurrido pero no se como hacerlo jajaja..
  #12 (permalink)  
Antiguo 05/11/2008, 14:40
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

se puede hacer con chmod

http://es2.php.net/manual/es/function.chmod.php

Un saludo
  #13 (permalink)  
Antiguo 05/11/2008, 15:16
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

entonces estupendo!!! así podran acceder los usuarios a su carpeta solo si son autentificados ?¿
  #14 (permalink)  
Antiguo 05/11/2008, 15:28
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Carpeta por usuarios

De poder se puede nfo, pero sigues sin solucionarlo... Igual al darle permisos de ese tipo '777' permites que CUALQUIERA haga lo que quiera...

La única manera que yo veo para que lo quieres pueda tener efecto, es que tu sistema vaya ligado a los propios usuarios del server... que lo dudo mucho.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #15 (permalink)  
Antiguo 05/11/2008, 15:32
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

Si te sale bien postea el codigo cuando lo termines, seria algo bueno para otros foreros y podrian incluirtelo en los APORTES del foro.

Un saludo
  #16 (permalink)  
Antiguo 05/11/2008, 15:58
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por jaronu Ver Mensaje
Si te sale bien postea el codigo cuando lo termines, seria algo bueno para otros foreros y podrian incluirtelo en los APORTES del foro.

Un saludo
Cita:
Iniciado por Carxl Ver Mensaje
De poder se puede nfo, pero sigues sin solucionarlo... Igual al darle permisos de ese tipo '777' permites que CUALQUIERA haga lo que quiera...

La única manera que yo veo para que lo quieres pueda tener efecto, es que tu sistema vaya ligado a los propios usuarios del server... que lo dudo mucho.

Saludos
ofuuuuuu estoy programando...esto creo que es más trabajoso de lo que yo me pensaba.
Como dice Carxl me pasaria lo mismo al darle permisos todos podran acceder... y a esto le sumamos si el usuario no cierra session los permisos no se cambiarán mmmmm....

Se me agotan las ideas chicos!!!!
  #17 (permalink)  
Antiguo 05/11/2008, 16:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Carpeta por usuarios

Lo mejor y más seguro es que los archivos los guardes en otro luegar fuera del DocumentRoot, luego en PHP creas una base de datos donde ligues que archivo pertenece a que usuarios, y luego con mod_rewrite "emulas" el que sea por carpetas, así al intentar leer un file que no sea de un usuario checas los permisos y le muestras el mensaje de error.

Saludos.
  #18 (permalink)  
Antiguo 05/11/2008, 16:28
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por GatorV Ver Mensaje
Lo mejor y más seguro es que los archivos los guardes en otro luegar fuera del DocumentRoot, luego en PHP creas una base de datos donde ligues que archivo pertenece a que usuarios, y luego con mod_rewrite "emulas" el que sea por carpetas, así al intentar leer un file que no sea de un usuario checas los permisos y le muestras el mensaje de error.

Saludos.
como se hace todo eso ? si me pones algun ejemplito te lo agradeceria,

aproposito la web la tengo que subir a un hosting, hay hosting que te proporciona eso de meter carpetas en otro sitio que no es el root ? porque yo n olos conozco.
  #19 (permalink)  
Antiguo 05/11/2008, 17:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Carpeta por usuarios

En las FAQs del foro puedes ver como subir archivos, puedes también aprender a subir datos a una base de datos, y en el foro de Apache puedes ver como utilizar mod_rewrite.

Normalmente en todos los hostings tienes varias carpetas y una de ellas es wwwroot, o www, o public_html, con que pongas los archivos arriba de esa carpeta estaran seguros.

Saludos
  #20 (permalink)  
Antiguo 05/11/2008, 17:52
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por GatorV Ver Mensaje
En las FAQs del foro puedes ver como subir archivos, puedes también aprender a subir datos a una base de datos, y en el foro de Apache puedes ver como utilizar mod_rewrite.

Normalmente en todos los hostings tienes varias carpetas y una de ellas es wwwroot, o www, o public_html, con que pongas los archivos arriba de esa carpeta estaran seguros.

Saludos
bueno.... lo primero si se hacerlo lo de mod_rewrite es la primera vez que lo oigo.
Y lo de las carpetas ahora que lo dices me suena de a verlas visto pero las borre porque pense que no serian utiles jajaja..
Bueno pues ya mañana me podnre a trabajar .

Gracias
  #21 (permalink)  
Antiguo 06/11/2008, 12:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 45
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Carpeta por usuarios

Insisto:

2-Luego para visualizar la imagen hacerlo a travez de la pagina php leer la imagen por codigo php y luego mostrarla , de esta manera no hay forma de que el usuario sepa cual es la url de la imagen.

adjunto codigo de ejemplo

Pagina html

<img src="../../user_img/show.php">


Como pueden ver la fuente (src) de la imágen es un archivo show.php que contiene lo siguiente:

<?php
$id = "ruta_fuera_de_la_zona_publica/usuario1.jpg";
$fd = fopen ($id, "r");
$datos = fread($fd, filesize($id));
$tipo = exif_imagetype($id);
$tipo = image_type_to_mime_type($tipo);
header( "Content-type: $tipo");
echo $datos;
?>

Al interpretar el codigo php en ningun momento se vera el origen de la imagen

Saludos
  #22 (permalink)  
Antiguo 06/11/2008, 12:58
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por mjaramillo Ver Mensaje
Insisto:

2-Luego para visualizar la imagen hacerlo a travez de la pagina php leer la imagen por codigo php y luego mostrarla , de esta manera no hay forma de que el usuario sepa cual es la url de la imagen.

adjunto codigo de ejemplo

Pagina html

<img src="../../user_img/show.php">


Como pueden ver la fuente (src) de la imágen es un archivo show.php que contiene lo siguiente:

<?php
$id = "ruta_fuera_de_la_zona_publica/usuario1.jpg";
$fd = fopen ($id, "r");
$datos = fread($fd, filesize($id));
$tipo = exif_imagetype($id);
$tipo = image_type_to_mime_type($tipo);
header( "Content-type: $tipo");
echo $datos;
?>

Al interpretar el codigo php en ningun momento se vera el origen de la imagen

Saludos
Pero esto no funciona acabo de probarlo y no hace nada.. La verdad esque es la primera vez que veo un php en un src.


Aproposito GatorV he estado toda la mñana mirando como funciona mod_rewriter y la verdad esque no me aclaro mucho.
He puesto directivas tales como los famosos errores 404, 500
Pero.... como "emulo" el directorio imaganes por usuarios ?..
  #23 (permalink)  
Antiguo 06/11/2008, 13:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Carpeta por usuarios

Con expresiones regulares, en tu .htaccess crea una regla tal que si se ve una url del tipo /usuario/archivo.ext te haga el match por ejemplo /(\w+)/(\w+) => descarga.php?user=$1&file=$2.

Con eso en la URL se va a ver la url como si fuera una carpeta y el archivo, pero realmente va a hacer el redirect a descarga.php y ahí controlas los permisos.

Saludos.
  #24 (permalink)  
Antiguo 06/11/2008, 14:13
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por GatorV Ver Mensaje
Con expresiones regulares, en tu .htaccess crea una regla tal que si se ve una url del tipo /usuario/archivo.ext te haga el match por ejemplo /(\w+)/(\w+) => descarga.php?user=$1&file=$2.

Con eso en la URL se va a ver la url como si fuera una carpeta y el archivo, pero realmente va a hacer el redirect a descarga.php y ahí controlas los permisos.

Saludos.
a ver que no me aclaro y me pierdo.

Ya tengo echo la subida de fichero me lo guarda en la carpeta /public/pepe/imagen1.jpg

a su vez me crea un registro en la Bd que identifica el usuario pepe con la imagen1.jpg

bien hasta aqui lo tengo todo claro.

mi expresion regular seria

/(\w+)/(\w+) => imagenes.php?user=pepefile=imagen1.jpg

no es asi ? lo de las (\W+) para que sirven :S esta parte no me queda nada clara.y que me redireccione a imagenes.php para controlar los permisos, hay es donde compruebo que ese usuario tiene esa imagen no ?.
  #25 (permalink)  
Antiguo 06/11/2008, 14:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Carpeta por usuarios

Si no te queda claro lee un manual sobre expresiones regulares, es más facil a que te diga lo que \w es, la idea de las expresiones regulares es obtener rangos de textos de acuerdo a un patrón especifico, con $1, $2, $3, etc. son los matches.

Repito, es más sencillo si lees un manual de expresiones regulares para que entiendas como funcionan.

Saludos.
  #26 (permalink)  
Antiguo 06/11/2008, 14:26
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

Hola nfo, la idea de mjaramillo tambien es buena y no es raro, pero nada raro encontar un archivo .php en un src, a si se hacen los captcha de seguridad para formularios.

Intenla lo que te dijo mjaramillo de nuevo, te ha de salir.

Un saludo
  #27 (permalink)  
Antiguo 06/11/2008, 15:04
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

Cita:
Iniciado por jaronu Ver Mensaje
Hola nfo, la idea de mjaramillo tambien es buena y no es raro, pero nada raro encontar un archivo .php en un src, a si se hacen los captcha de seguridad para formularios.

Intenla lo que te dijo mjaramillo de nuevo, te ha de salir.

Un saludo
eso lo he probado tal que asi y no me funciona eh

Código:
Pagina html
<img src="./show.php">


Como pueden ver la fuente (src) de la imágen es un archivo show.php que contiene lo siguiente:

<?php
$id = "img/usuario1.jpg";
$fd = fopen ($id, "r");
$datos = fread($fd, filesize($id));
$tipo = exif_imagetype($id);
$tipo = image_type_to_mime_type($tipo);
header( "Content-type: $tipo");
echo $datos;

?>
pero esque encima si haces un echo de id no devuelve nada .... yo para mi que esto no funciona :S
  #28 (permalink)  
Antiguo 06/11/2008, 15:32
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

este codigo es un archivo que se llama show.php

<?php
$id = "img/usuario1.jpg";
$fd = fopen ($id, "r");
$datos = fread($fd, filesize($id));
$tipo = exif_imagetype($id);
$tipo = image_type_to_mime_type($tipo);
header( "Content-type: $tipo");
echo $datos;

?>

Y en otra pagina donde se ha de mostar esa imagen que genera el archivo haces

<img src="show.php">
  #29 (permalink)  
Antiguo 06/11/2008, 15:35
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Carpeta por usuarios

sisiisis tal cual y n osale nada
  #30 (permalink)  
Antiguo 06/11/2008, 15:47
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carpeta por usuarios

Ya no llego a mas, si con esto no te sale espera a que alguien con mas conocimientos de php te responda.


<?php
$id = "img/usuario1.jpg";
header( "Content-type: image/jpg");
imagejpg($id);
?>

Un saludo
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 02:48.