Pregunta:
Fecha: 10-08-2016 16:08:52
(En Español)
Actualmente me encuentro trabajando con CodeIgniter pero siempre he tenido la duda de como manejar archivos, anteriormente cuando trabajaba con php puro simplemente metia en una carpeta todas las imagenes por ejemplo:
En un sistema cada que registraba un usuario le permitia subir una imagen, al registrarse guardaba la imagen en una carpeta en el servidor y guardaba el nombre de la imagen en la base de datos, entonces al momento que el usuario logeaba guardaba como variable de session el nombre de la imagen que tenia asignada a ese usuario en la bd, despues de eso en la vista principal despues de logear utilizaba la etiqueta
Me gustaria saber de alguna buena practica para el manejo de archivos (imagenes, archivos de texto etc..). tengo entendido que se puede creear en el servidor archivos index.html con algun mensaje de error para no acceder a la carpeta de tu servidor como lo hace codeigniter o tambien restringir el acceso desde httaccess, si ustedes tienen una mejor practica ojala y la puedan compartir ya que el manejo de archivos en un sitio web es indispensable y tambien muy delicado-...
Les mando un cordial saludo ! ^^ Votos: 2 - Respuestas: 4 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
Manejo de imágenes con CodeIgniter[Resuelta]
Que tal amigos!Actualmente me encuentro trabajando con CodeIgniter pero siempre he tenido la duda de como manejar archivos, anteriormente cuando trabajaba con php puro simplemente metia en una carpeta todas las imagenes por ejemplo:
En un sistema cada que registraba un usuario le permitia subir una imagen, al registrarse guardaba la imagen en una carpeta en el servidor y guardaba el nombre de la imagen en la base de datos, entonces al momento que el usuario logeaba guardaba como variable de session el nombre de la imagen que tenia asignada a ese usuario en la bd, despues de eso en la vista principal despues de logear utilizaba la etiqueta
<img src="..ruta de la imagen">y asi mostraba la imagen, el problema es que el usuario podria acceder a dicha carpeta y poder extraer imagenes aunque no fueran de su session...
Me gustaria saber de alguna buena practica para el manejo de archivos (imagenes, archivos de texto etc..). tengo entendido que se puede creear en el servidor archivos index.html con algun mensaje de error para no acceder a la carpeta de tu servidor como lo hace codeigniter o tambien restringir el acceso desde httaccess, si ustedes tienen una mejor practica ojala y la puedan compartir ya que el manejo de archivos en un sitio web es indispensable y tambien muy delicado-...
Les mando un cordial saludo ! ^^ Votos: 2 - Respuestas: 4 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 10-08-2016 21:45:15 Yo solucionaría el problema que tienes asi: (no se si sera lo mejor XD)
1) Quitar la opción de que se liste el contenido de la carpeta. (poniendo un index.html es la manera mas facil)
2) "codificaría" el nombre de las imágenes de la siguiente manera :
"img".$idusuario."_".$cadenaaleatoria.".jpg" (y guardaría el valor de la cadenaaleatoria a este usuario en la BD) Votos: 1 - Link respuesta -
Fecha: 11-08-2016 05:09:15 Una buena práctica es tener una carpeta individual para cada tipo de tus "assets" (css, js e imágenes).
Solo no olvides modificar tu .htaccess (o tu nginx) para que codeigniter no procese las peticiones hechas a esta carpeta:
RewriteEngine on RewriteCond $1 !(^index\.php|images|uploads|css|js|robots\.txt) RewriteRule ^(.*)$ ./index.php?/$1 [L]
Por otro lado, codeigniter 2 y 3 tienen unas excelentes librerías y clases con muchos ejemplos para el manejo de uploads. Yo te sugiero que las uses y las configures de manera que al subir la imagen permitas que codeigniter cambie el nombre del archivo para no arriesgarte a tener duplicados. Este lo guardas en la base de datos y como te contestó Jorge, usa una cadena tipo
base_url()."img/". $nombre_imagen
Votos: 3 - Link respuesta -
Fecha: 11-08-2016 12:04:53 Luis buen dia
Vas por buen camino solo que si no modificas el .htaccess no podras acceder a carpetas, pasara lo mismo si mandas llamr un css o js
RewriteEngine on
RewriteCond $1 !(^index\.php|img|css|js|fonts|robots\.txt)
RewriteRule ^(.*)$ ./index.php?/$1 [L]
de cajon yo uso asi mi .htaccess siempre usos esas carpetas
te dejo un buen tutorial de codeigniter
https://www.youtube.com/watch?v=8PMVYDTSKsI&list=PLCbDUgJjvdJfl-Tqjb1hoS6syZIGk3PuO
es bueno usar tambien la guia , ya que siempre hay uno q otro detalle que nos hace perder tiempo.
Saludos Votos: 1 - Link respuesta -
Fecha: 11-08-2016 15:56:46 Actualmente tengo el siguiente httaccess para el tema de las url amigables..
Options FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>
me imagino que solo agregaria la linea de
RewriteCond $1 !(^index\.php|img|css|js|fonts|robots\.txt)
y separando por '|' las carpetas.... sucede que la raiz de cada proyecto de codeigniter creeo la carpeta assets para guardar el js, css. fuentes etc....
- proyecto
*application
*assets
-- /css
-- /fonts
-- /js
-- /images
*system
funcionaria para esa estructura?
Agradezco a todos por sus respuestas ^^ Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
