Foros del Web » Programando para Internet » PHP »

Borrado de imágenes y enlace directo con php

Estas en el tema de Borrado de imágenes y enlace directo con php en el foro de PHP en Foros del Web. Buenas, llevo pensando esto varios días (aunque sin llevar nada a la práctica) y no encuentro la solución. Resulta ser de que yo tengo un ...
  #1 (permalink)  
Antiguo 05/02/2010, 17:13
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 11 años, 9 meses
Puntos: 23
Borrado de imágenes y enlace directo con php

Buenas, llevo pensando esto varios días (aunque sin llevar nada a la práctica) y no encuentro la solución.

Resulta ser de que yo tengo un panel de administración (bueno que decir, de momento solo lista imágenes ), y entonces me gustaría que se pudiesen borrar fotos y hacerles un link hacia las imágenes listadas.

El código que yo tengo para listar es este (usa XML):

Código PHP:
<?php 
require ('subir.php') ;
$dir "tmp/" ;

echo 
"<XML encoding='UTF-8' standalone='yes' version='1.9'>\n" ;
echo 
"  <folder>\n" ;

if (
is_dir($dir))
{
if (
$gd opendir($dir))
{
while ((
$archivo readdir($gd)) !== false)
{
if (
$archivo != "." and $archivo != ".." and $archivo != "index.php")
{
if (
is_dir($archivo))
{
echo 
"   <folder>$archivo</folder>\n" ;
}
else
{
echo   
"<file><a href=$varpath>$archivo</a><br /></file>\n" ;
}
}
}
closedir($gd) ;
}
}

echo 
"  </folder>\n" ;
echo 
"</XML>\n" ; */

?>
Os explico, este código posee un vago intento de hacer un link hacia la imagen, fijense:

Código PHP:
echo   "<file><a href=$varpath>$archivo</a><br /></file>\n" 
Por lo que al principio hago el require de subir.php. Pero si, la imagen sale con un enlace pero sin ruta.

Otra cosa con la que tengo un quebradero de cabeza es con como borrar las imágenes, he estado investigando (sin probar mucho) sobre las funciones de php con los archivos y demás, pero no he conseguido nada.

Se que no es muy correcto venir aquí a preguntar como se podría hacer, pero, es (creo) mi ultima solución.

¿Cómo podría hacer ese link hacia la imagen y el de borrar imágenes?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #2 (permalink)  
Antiguo 05/02/2010, 20:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 8 meses
Puntos: 836
Respuesta: Borrado de imágenes y enlace directo con php

Si quieres que aparezca el directorio en el enlace a la imagen, debes concatenarlo con $dir.

Para borrar un archivo, usa unlink
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 05/02/2010, 20:25
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 10 años
Puntos: 36
Respuesta: Borrado de imágenes y enlace directo con php

Cita:
Iniciado por Distriker Ver Mensaje
Por lo que al principio hago el require de subir.php. Pero si, la imagen sale con un enlace pero sin ruta.
¿Y eso qué significado tendría para nosotros?. ¿Dónde defines $varpath?, ¿no debe ser tu directorio más el nombre del archivo?.

Pese a lo que digas, eso no es XML, está mal definido. No deberías meter etiquetas HTML (no es buena idea) como contenido de un nodo, en todo caso, definirlo como CDATA, aunque la idea es que XML solo represente datos, en este caso, la ruta y nombre de tu archivo, aparte está la lectura o transformación que debería convertirlo a un enlace o hacer lo que sea.

¿Por qué XML?

Cita:
Iniciado por Distriker Ver Mensaje
Otra cosa con la que tengo un quebradero de cabeza es con como borrar las imágenes, he estado investigando (sin probar mucho) sobre las funciones de php con los archivos y demás, pero no he conseguido nada.
¿Borrar físicamente?. Tienes la función unlink()
www.php.net/unlink
__________________
I ♥ The Music!
  #4 (permalink)  
Antiguo 06/02/2010, 05:24
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 11 años, 9 meses
Puntos: 23
Respuesta: Borrado de imágenes y enlace directo con php

Muchas gracias David, el link ya está solucionado , lo dejé así:

Código PHP:
echo   "<file>$archivo <a href=$dir$archivo>Ir a imagen</a><br /></file>\n" 
Ahora con el unlink tengo mas lio, he probado poniendolo en una variable y luego llamando esa variable con un link pero no me sale. Lo he puesto así:

Código PHP:
$borrar unlink ($dir.$archivo) ; 
Código PHP:
echo   "<file>$archivo <a href=$dir$archivo>Ir a imagen</a> - <a href=$borrar>Borrar imagen</a><br /></file>\n" 
Dejando de esta manera el código:

Código PHP:
<?php 
$dir 
"tmp/" ;
$borrar unlink ($dir.$archivo) ;

echo 
"<XML encoding='UTF-8' standalone='yes' version='1.9'>\n" ;
echo 
"  <folder>\n" ;

if (
is_dir($dir))
{
if (
$gd opendir($dir))
{
while ((
$archivo readdir($gd)) !== false)
{
if (
$archivo != "." and $archivo != ".." and $archivo != "index.php")
{
if (
is_dir($archivo))
{
echo 
"   <folder>$archivo</folder>\n" ;
}
else
{
echo   
"<file>$archivo <a href=$dir$archivo>Ir a imagen</a> - <a href=$borrar>Borrar imagen</a><br /></file>\n" ;
}
}
}
closedir($gd) ;
}
}

echo 
"  </folder>\n" ;
echo 
"</XML>\n" ;

?>
Le quito el require a subir.php ya que no me va a ser faltar.

¿Cómo podría funcionar? Voy a seguir probando formas.

Cita:
¿Por qué XML?
Es así como lo leí y aprendí.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #5 (permalink)  
Antiguo 06/02/2010, 08:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 8 meses
Puntos: 836
Respuesta: Borrado de imágenes y enlace directo con php

¿Qué archivo precisamente necesitas eliminar? Ya que $archivo aún no tiene ningún valor al momento en que intentas pasarlo como parámetro a unlink()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 06/02/2010, 09:56
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 11 años, 9 meses
Puntos: 23
Respuesta: Borrado de imágenes y enlace directo con php

Pretendo que se pueda borrar las imágenes subidas con un botón.

¿Cómo podría hacerlo?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #7 (permalink)  
Antiguo 06/02/2010, 09:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.712
Antigüedad: 14 años, 8 meses
Puntos: 836
Respuesta: Borrado de imágenes y enlace directo con php

Puedes usar un parámetro en la URL que indique el archivo a borrar:
borrar.php?archivo=archivo.bmp
En borrar.php obtienes con $_GET ese nombre de archivo y lo borras con unlink(); lógicamente debes hacer una validación para que sólo borre archivos del directorio deseado y no cualquiera del sistema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 06/02/2010, 10:31
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 11 años, 9 meses
Puntos: 23
Respuesta: Borrado de imágenes y enlace directo con php

A ver, veamos. Yo tengo el archivo del panel de administración que hace un require a /includes/listado.php.

En ese archivo se encuentra todo lo que sería el código para listar los archivos y demás.

Tengo un lío con esto, no se porque diablos no me aclaro :S

A ver, creo que usted me está diciendo que en el archivo donde se encuentra el require ponga un input de botón que borre el archivo listado. ¿Verdad?

Siento tantas dudas, pero no se porque, pero me encuentro bastante perdido con esto.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #9 (permalink)  
Antiguo 08/02/2010, 00:19
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 10 años
Puntos: 36
Respuesta: Borrado de imágenes y enlace directo con php

Cita:
Iniciado por Distriker Ver Mensaje
Le quito el require a subir.php ya que no me va a ser faltar.
Y de nuevo digo:
Cita:
Iniciado por maturano Ver Mensaje
¿Y eso qué significado tendría para nosotros?.
Lo importante y que te tienes que aclarar es en la definición de variables.

Cita:
Iniciado por Distriker Ver Mensaje
Es así como lo leí y aprendí.
Pues lo leíste/aprendiste mal. Repito: eso NO es XML, y lo último que necesitas es liarte con XML, no lo necesitas.


Cita:
Iniciado por Distriker Ver Mensaje
A ver, veamos. Yo tengo el archivo del panel de administración que hace un require a /includes/listado.php.
(...)
A ver, creo que usted me está diciendo que en el archivo donde se encuentra el require ponga un input de botón que borre el archivo listado. ¿Verdad?
Primero, no te líes con "includes y requires". Para efectos prácticos solo tienes un script que se ejecuta, que lo dividas en partes y los incluyas son solo para efectos de organización, no afecta en nada a la ejecución del script (en principio). Ve tu código como un todo.

Segundo, lo que David sugirió, es recibir el nombre del archivo por URL, con la debida observación que hacerlo de ese modo tendrás que hacer una serie de serias validaciones porque podría afectar la seguridad tanto de tu sistema como de tu máquina (del servidor).

Recibiendo el valor por URL, solo lo cachas y eliminas (¿recuerdas que mencioné sobre la definición de las variables?):
Código PHP:
Ver original
  1. <?php
  2. // Suponiendo una URL como archivo.php?eliminar=archivo.jpg
  3. $archivo = $_GET['eliminar'];
  4.  
  5. unlink($archivo); // Borrando archivo.jpg

¿No sabes cómo recibir variables por URL?
www.php.net/variables.external

Y me adelanto:
¿Problemas con los nombres de los archivos pasándolos por URL?
www.php.net/urlencode
www.php.net/urldecode
__________________
I ♥ The Music!
  #10 (permalink)  
Antiguo 08/02/2010, 11:57
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 11 años, 9 meses
Puntos: 23
Respuesta: Borrado de imágenes y enlace directo con php

Buenas (Maturano y David), muchas gracias por tu explicación Maturano.

Ya lo tengo echo finalmente, quedó así:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $dir = "tmp/" ;
  4. $borrar = $_GET ['borrar'] ;
  5.  
  6.  
  7. echo "<XML encoding='UTF-8' standalone='yes' version='1.9'>\n" ;
  8.  
  9. echo "  <folder>\n" ;
  10.  
  11.  
  12.  
  13. if (is_dir($dir))
  14.  
  15. {
  16.  
  17. if ($gd = opendir($dir))
  18.  
  19. {
  20.  
  21. while (($archivo = readdir($gd)) !== false)
  22.  
  23. {
  24.  
  25. if ($archivo != "." and $archivo != ".." and $archivo != "index.php")
  26.  
  27. {
  28.  
  29. if (is_dir($archivo))
  30.  
  31. {
  32.  
  33. echo "   <folder>$archivo</folder>\n" ;
  34.  
  35. }
  36.  
  37. else
  38.  
  39. {
  40.  
  41. if ($borrar == ($dir.$archivo)) {
  42. unlink($dir.$archivo);
  43. } else {
  44. echo   "<file>$archivo | <a href=$dir$archivo>Ir a imagen</a> | <a href=../includes/listado.php?borrar=". urlencode($dir.$archivo) .">Borrar imagen</a><br /></file>\n" ;
  45. }
  46. }
  47. }
  48. }
  49.  
  50. closedir($gd) ;
  51.  
  52. }
  53. }
  54.  
  55. echo "  </folder>\n" ;
  56.  
  57. echo "</XML>\n" ;
  58. ?>

Bueno, ya lo tengo (os lo agradezco a ustedes y a Ocs de #php_para_torpes).

Pero el problema es que no me lo elimina.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.

Etiquetas: borrado, directo, enlace
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 16:20.