Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/08/2005, 14:10
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No uses rutas relativas en tu copy() .. aunque desde PHP 4.? (no recuerdo la versión .. más info en: www.php.net/copy) puedes usar rutas relativas (http://....) lo que deberías usar es una ruta absoluta .. algo tipo ../../nose/dondesea/nose.tal .. o algo tipo: /home/www/sitio.com/public_html/imagenes/imagen.tal .. o donde esté tu ruta de tu sitio en tu servidor desde su raiz.

Por otro lado .. el Upload en sí lo debes hacer vía las variables $_FILES .. hasta que no sube tu archivo al servidor no puedes moverla a su destino definitivo (tanto para hacer tu previo como para moverla definitivamente) .. esto lo debes hacer con la función move_uploaded_file() y no copy() para evitar problemas de acceso restringido .. pues estás intentando acceder desde PHP a un archivo fuera tal vez de su ambito restringido por su "open_base_dir" (php.ini)

En resumen:
1) Sube tu archivo por tu actual formulario HTML con su campo tipo "file".
2) Muevelo a tu sito (bajo tu dominio) con move_uploaded_file().
3) Si necesitas hacer un previo .. hazlo desde donde movistes tu archivo ..
4) crea rutinas para borrar tu archivo "temporal" si pasado tu previo no lo requieres (undelete() por ejemplo si cancela el previo .. que de todas formas recuerda que el archivo ya subió al servidor, con el tiempo que eso le demore .. )
5) Una vez decidido tal vez que tu archivo te interesa .. muevelo con copy() hacia su destino definitivo.

Todo esto te evitará problemas por ejemplo con servidores configurados en modo seguro "SAFE_MODE" y otras restricciones que afecten a PHP.

Sobre el tema de sesiones y tus problemas .. En principio ya has visto que según el esquema que te planteo . .no tiene mucho sentido usar una sesión para llevar en ella todo el "binario" de tu archivo que has subido .. más que bien la sesión debes usarla simplemente para verificar si tu usuario está autentificado en tu sistema y a lo sumo en el proceso de movimeinto de tu archivo recien subido a tu destino temporal (para hacer tu previo), puedes asignarle como nombre de ese archivo el SID (Identificador único de sesion) .. algo tipo: $nombre_archivo = session_id()."_".$_FILES['imagen']['name'] ... quedandote algo tipo: 8978as98f768a68f_mimagen.jpg .. ahí tendrás esa imagen que pertenece a esa sesión .. útil para que filtres esos archivos a presentar como "previo" por ese ID (session_id() .. ) que correspondrá con el tuyo .. así otros usuarios no ven otros archivos "temporales" de otras sesiones activas. (Esto es sólo un ejemplo de como podrías usar la sesión para validaciones de este tipo)


Un saludo,