Borrar ficheros en PHP

RaymaN

Buenas, he subido a mi web un pequeño script para subir imágenes rápidamente, y tiene incluso una opción para visualizar las imágenes subidas, pero me gustaría añadirle la opción de borrarla pulsando en un link que se llame Borrar.

He estado mirando un buen rato por google pero no he conseguido hacerlo funcionar. ¿Alguien sabe como hacerlo?

Saludos y gracias.

cabron

Para borrar un fichero en php tienes que usar:

ulink("rutaynombredelfichero");

Así que tu enlace de borrar, tendrá que llamar a un script php donde esté ulink recibiendo la ruta y el nombre del fichero.

RaymaN

#2 vi que había que utilizar unlink, pero como ya dije no consigo hacerlo rular. He creado delete.php y he puesto esto:

<?php

$archivo = ".$link."
unlink($archivo)

?>

Pero no funciona :\

cabron

Bueno, después de buscar un rato he encontrado el código que escribí para una página en la que que tenía que sustituir un fichero existente por otro nuevo.

Hace más de una año que hice esa página, y de hecho fue la última vez que usé php, y si te soy sincero no me acuerdo de como funciona xD pero bueno, te dejo el código, y si tienes alguna duda pregunta, que seguro que releyendo el código voy recordando cosas:

http://rafb.net/p/VJthBR78.html

RaymaN

Ya he visto algunos ejemplos de unlink, pero ya te digo que no consigo hacerlo funcionar. No se que error puede tener.

.$link. es la ruta absoluta de la imagen

Hago un enlace a delete.php y me sale este error:

Parse error: syntax error, unexpected T_STRING in xxx/upload/delete.php on line 4

cabron

Um, como te he dicho hace un año que no toco PHP y puede que esté un poco perdido con la sintaxis, pero creo que te da error por que no estás poniendo ; al final de cada sentencia, además, si $link contiene la ruta, tendrías que hacer:

unlink($link);

No es necesario que asignes $link a otra variable, y el . antes de $link tampoco debería estar ahí.

RaymaN

Bueno, parece que hemos avanzado un poco, ahora me da este error:

Warning: unlink() [function.unlink]: No such file or directory in xxx/upload/delete.php on line 3

Creo que el problema es que en delete.php solo se encuentra el $link, por lo que no puede saber cual es la ruta al ser un archivo aislado, ya que $link se encuentra en el otro archivo .php

¿Como soluciono esto?

AbSe

Explícate mejor, pero en todo caso la cosa al final quedaría así:

<?php

$archivo = $link;
unlink($archivo);

?>

También puede ser un error de como pasas la variable $link, si estas usando PHP5 y estas pasando las variables por POST o GET has de definirlas antes, es decir:

<?php

$archivo = $GET['link']; // o $POST['link']
unlink($archivo);

?>

Saludos

cabron

La manera de #8 es la correcta, eso sí, no lo puedes usar tal cual, ya que cualquiera podría borrar cualquier archivo de tu servidor Web simplemente pasando el nombre del archivo como parámetro de la URL, vas a tener que añadir comprobación a $archivo, para asegurarte de que lo que han pasado, es un fichero que se puede borrar sin problemas.

RaymaN

We! ya funciona :P

Puse la segunda forma de #8, y luego en el enlace de borrar pues delete.php?link='.$entry.' y funciona perfectamente ^^

Gracias a los 2 ;)

Hynack

como te dicen ahi arriba, no olvides una comprobacion de que el archivo que estas borrando es el adecuado.

Usuarios habituales

  • Hynack
  • RaymaN
  • cabron
  • AbSe