Eliminar-Borrar archivos con PHP utilizando unlink(ruta-fichero)
Bienvenidos a Ver Tutoriales.com, en esta ocasión os traigo un código para eliminar un archivo con PHP.
Para borrar un fichero solo debemos utilizar la función unlink, veamos un ejemplo.
<?
unlink(‘tutorial.txt’);
?>
En el anterior ejemplo, estamos eliminando el archivo tutorial.txt, que ha de estar en la misma ruta que el archivo que llama la función, tambien se le podrÃa pasar la ruta de la siguiente manera:
<?
unlink(“./../videotutoriales.fla”);
unlink(“./tutoriales/videotutoriales.fla”);
?>
En la primera llamada estamos accediendo a la carpeta contenedora del archivo y eliminando videotutoriales.fla, en la segunda llamada a la función unlink, estamos accediendo a la carpeta tutoriales y eliminando videotutoriales.fla.
Pero vamos a completar un poco este script y vamos a controlar los errores, como puede ser que el archivo esté protegido contra escritura, de manera que al tener propiedades de solo lectura no pueda borrarse o que no exista el archivo… etc. Además le vamos a pasar el archivo por url de manera que haciendo un link a nuestro script, recojamos el nombre del archivo y lo eliminemos.
Os pongo el ejemplo:
Primero linkamos con la variable asignada por la url de la siguiente manera:
<a href=”./borrar.php?fichero=tutorial.txt”> Borrar <a>
//Y ahora controlamos que el archivo que recojemos con el método $_GET sea borrado
if (!unlink($_GET['fichero'])){
//si no puede ser muestro un mensaje
echo ‘no se pudo borrar el archivo :’.$_GET['archivo'];
}
Este código tiene poco que comentar, pero vamos allá, la primera linea serÃa un enlace a esa página, se le pasarÃa por url el nombre del archivo a eliminar conteniendola en la variable fichero.
Una vez cargada la página “borrar.php” recojemos el valor de fichero con el método $_GET y comprobamos que se ha podido eliminar con unlink.
La función unlink, nos devolverá 0 si no ha realizado la eliminación del fichero y un 1 si lo ha borrado, al preguntar con la ! conseguimos matar dos pajaros de un tiro, ejecutar unlink y comprobar que NO se haya llevado a cabo. Si fuera este el caso, mostramos por pantalla que hubo problemas, sino, pues seguirÃa el flujo de la aplicación.
Pues nada más, espero que os haya servido de ayuda.
Un saludo!
Este código ha de ser controlado para no sufrir algún ataque desde el envÃo de la url ya que no se controla la eliminación y podrÃan eliminar archivos necesarios. Para ello se aconseja tener los permisos necesarios de escritura y lectura según correspondan.



9 Respuestas
Agapito
abril 16th, 2010 a 1:09 pm
1El código
Tiene un error léxico, le sobra un corchete al final.
QuedarÃa asÃ:
Salu2
VideoTutoriales
abril 16th, 2010 a 4:53 pm
2Llevas razón, se me colarÃa al transcribirlo. Muchas gracias ya está editado.
Un saludo!
HAX
mayo 27th, 2011 a 3:36 pm
3Gracias por el tuto y los ejeplos, ahora me pongo a tratar con ellos, seguro puedo hacer algo muy bueno con ello !!. aunque tengo mucho que provar, pues mi interaccion seria borrar archivos desde flash con php.
intentando seleccionar en flash el archivo (nombre del archivo y pasar la variable a php y borrar !!)
HAX
mayo 27th, 2011 a 5:29 pm
4ok, lo he logrado !!, ahora en flash, pongo el nombre del archivo que quiero borrar, preciono el boton y me lo borra !, me avisa si el archivo con tal nombre se borro !. o si el archivo con tal nombre no se borro, ! y le agregue una comprovacion antes, para verificar si el archivo existe o no !. de esa manera si intento eliminar el archivo 2 veces, me detecta que este ya no existe !! y me manda un mensaje, este archivo tal no existe !!..
<?
$rm_file = $_POST['rmfile'];
if( file_exists( $rm_file ) )
{
if (!unlink( $rm_file ))
{
echo "estado=El archivo " .$rm_file . " no se pudo borrar.";
}
else
{
echo "estado=El archivo ” .$rm_file . ” fue borrado.”;
}
}
else
{
echo “estado=El archivo ” .$rm_file . ” NO EXISTE”;
}
?>
mando las variables del flash con loadvars via POST! y las recibo de igual forma..
VideoTutoriales
mayo 29th, 2011 a 5:21 pm
5Muy bueno, gracias por el aporte!
aerview
noviembre 26th, 2011 a 3:35 am
6No me ha funcionado bien..quisiera saber como eliminar el archivo me urge!
VideoTutoriales
noviembre 26th, 2011 a 12:04 pm
7¿Qué te ha fallado?
¿Revisaste las comillas dobles? Es posible que al transcribir no ponga las comillas correctamente.
Un saludo!
nico
diciembre 28th, 2011 a 2:13 pm
8este codigo tiene un agujero de seguridad importante per esta bueno para entenderlo
VideoTutoriales
diciembre 28th, 2011 a 2:28 pm
9Supongo que el agujero que ves, será por el envio del nombre de archivo por url y la toma del archivo que no está controlada.
Eso se puede manejar, partiendo de encriptar el envÃo, o también controlando que no metan otras direcciones con ./../ etc.
Vamos que todo aquel que haya llegado leyendo aquà ha de saber que se tiene que controlar
Lo pondré como una nota en el artÃculo gracias jeje
Insertar al RSS los comentarios de esta entrada
Escribe tu comentario