Foros del Web » Programando para Internet » PHP »

PHP OO Subir imagenes a la base de datos

Estas en el tema de Subir imagenes a la base de datos en el foro de PHP en Foros del Web. Tengo otro problema que e intentado solucionar y no puedo es muy sencillo pero en realidad no me funciona. Tengo un formulario en el cual ...
  #1 (permalink)  
Antiguo 13/05/2011, 18:19
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 13 años
Puntos: 11
Pregunta Subir imagenes a la base de datos

Tengo otro problema que e intentado solucionar y no puedo es muy sencillo pero en realidad no me funciona.

Tengo un formulario en el cual el usuario le permite subir su foto de manera opcional osea cuando el usuario ya esta registrado tengo todo el código php listo lo que no me funciona es que no me guarda la imagen en el host de mi servidor e probado de manera local con el wampserver y si me funciona pero la momento de probarlo con el servidor no me guarda la imagen supongo la la ruta es la que esta mal cuando le pido guardar la imagen, mi problema es que como tengo que hacer para darle la ruta de mi servidor ??

tengo este código que es la acción del formulario:

Código PHP:
$usuario "".$_SESSION['k_username']."";
$nombre_foto $_FILES['subir_img']['name'];
$ruta $_FILES['subir_archivo']['tmp_name'];
$destino "foto/".$nombre_foto;
copy($ruta,$destino);

mysql_connect("servidor","usuario","contraseña");
mysql_select_db('base');
mysql_query("UPDATE usuarios SET imagen='$destino' WHERE usuario='".$_SESSION['k_username']."'"); 
  #2 (permalink)  
Antiguo 13/05/2011, 19:28
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Subir imagenes a la base de datos

Hola.

Dudo que el servidor tenga problemas siempre que la carpeta en la que se vayan a introducir las imágenes tenga los permismos (chmod) necesarios. Por otra parte, si además quieres crear una carpeta, tendrás que hacerlo mediamente ftp_connect(); y establecerle los permisos a cada carpeta creada.


Estoy casi seguro de que ese es el problema. De todas formas, sería más fácil si hicieras un copy&paste del error, para saber qué es lo que pasa exactamente.


Saludos.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #3 (permalink)  
Antiguo 14/05/2011, 00:08
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Subir imagenes a la base de datos

checa que la carpeta a la que subes las imágenes tenga permisos 777
  #4 (permalink)  
Antiguo 14/05/2011, 04:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Subir imagenes a la base de datos

A ver, una cosa, aunque te funcione el código que tienes en local no es lo mejor para trabajar con archivos subidos, ya que para eso existen funciones especialmente diseñadas para trabajar con archivos subidos mediante POST, los cuales son is_uploaded_file y move_uploaded_file...

Ahora, para crear carpetas no es en absoluto conectarse por medio del FTP, simplemente hacer un mkdir($ruta,0755), ojo, en servidores de producción no es nada, NADA recomendable usar 777 ya que pueden subir archivos ejecutables (y no me refiero so a exe en windows, si no a otros que también son ejecutables en linux, como sh, etc)
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 14/05/2011, 06:29
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Subir imagenes a la base de datos

Cita:
existen funciones especialmente diseñadas para trabajar con archivos subidos mediante POST, los cuales son is_uploaded_file y move_uploaded_file...
Completamente de acuerdo. Además, con utilizar permisos 755 es suficiente.

Cita:
para crear carpetas no es en absoluto conectarse por medio del FTP
Según la configuración del hosting que utilices, algunos no te dejarán crear una carpeta sin más, tendrás que hacerlo mediante ftp. Esto suele darse en hostings gratuítos. A mi me ha pasado cuando trabajaba con este tipo de hostings, en concreto 000webhost.


Un saludo.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #6 (permalink)  
Antiguo 14/05/2011, 08:52
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Subir imagenes a la base de datos

bueno es cierto que con permisos 777 se pueden subir ejecutables, pero tambien depende del filtro que uses para validar la subida.
  #7 (permalink)  
Antiguo 14/05/2011, 09:08
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Subir imagenes a la base de datos

Lo peor que puedes hacer es suponer que jamas alguien intentará buscar una debilidad en tu sistema, puede que no suban directamente el archivo via POST, o incluso manipular los archivos para que los mimetype sean diferentes al que realmente es, y así ejecutar archivos indebidos, no puedes NUNCA confiar en tus usuariosy menos cuando van a subir archivos a tu servidor
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 14/05/2011, 09:12
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Subir imagenes a la base de datos

Cita:
Iniciado por Nemutagk Ver Mensaje
Lo peor que puedes hacer es suponer que jamas alguien intentará buscar una debilidad en tu sistema
yo jamás dije eso :D
  #9 (permalink)  
Antiguo 14/05/2011, 09:20
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Subir imagenes a la base de datos

El punto es, para que dejar opción de ejecutar archivos con permisos 777 si para subir y escribir es mas que suficiente 755, así te evitaras cualquier sorpresa, tengas o no filtros bien definidos
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 14/05/2011, 09:30
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Subir imagenes a la base de datos

pues si tienes razón. pero a mi no suele funcionarme bien 755 y en mis aplicaciones ha bastado con buenos filtros en los uploads de imágenes por eso me acostumbre y bueno nunca he sufrido ataques, quizas sea por eso.
  #11 (permalink)  
Antiguo 14/05/2011, 09:34
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 13 años
Puntos: 11
Respuesta: Subir imagenes a la base de datos

ok gracias por todas sus respuestas pero ya e intentado poner archivos 755 y tambien probe con 777 y tampoco funca mi prgunta es como le especifico la ruta correctamente
  #12 (permalink)  
Antiguo 14/05/2011, 09:37
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Subir imagenes a la base de datos

Eso es algo muy basico, aparte, no se te puede ayudar si no sabemos la estructura de tu sitio, no somos adivinos
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 14/05/2011, 09:39
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Subir imagenes a la base de datos

Veamos, primero sería bueno poder ver el error que te devuelve php. Además, te han comentado y muy bien además, que utilices mejor move_uploaded_file() en lugar de copy(). Cada cosa para lo que es.

Para que no haya errores en la ruta, podrías ponerla en base al índice, de la siguiente manera:

Código PHP:
Ver original
  1. $ruta = $_SERVER['DOCUMENT_ROOT'].'/fotos/'.$nombre_foto;

Es la manera de siempre acertar en las rutas. Un saludo.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.

Etiquetas: ruta, bases-de-datos
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 23:38.