654380491
hola@carlosdk.com
Login
[miniorange_social_login]

Login with your site account

Lost your password?

Carlos DK Carlos DK
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
Back
  • Inicio
  • Kit digital
  • Universo Dk
  • Blog
  • Contacto
  • Home
  • Blog
  • Tutoriales formativos
  • Eliminar-Borrar archivos con PHP utilizando unlink(ruta-fichero)

Tutoriales formativos

31 Mar

Eliminar-Borrar archivos con PHP utilizando unlink(ruta-fichero)

  • By Carlos Dk
  • In Tutoriales formativos
  • 0 comment

Bienvenidos a Ver Tutoriales.com, en esta ocasión os traigo un código para eliminar un archivo con PHP. Unlink() la función para borrar archivos.

Nota: En el vídeo explico con un ejemplo el código PHP para eliminar ficheros con Unlink

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.

Controlando el borrado de archivos

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.

Tags:codigophpProgramacion
  • Share:
Carlos Dk

You may also like

Crear categorías y configurar menú en WordPress en 4 min.

  • marzo 3, 2019
  • by Carlos Dk
  • in Tutoriales formativos
Crear categoría y menú WordPress Es indispensable en una nueva instalación de WordPress, crear las...
Instalar tema en WordPress en 2 pasos
febrero 23, 2019
Actualizar MySQL 5.1 a 5.6 en CentOS 6.9 con Plesk como panel
octubre 20, 2018
Recorrer todos los objetos de una capa o del DOM completo con JQuery
diciembre 22, 2014

    Comments

  1. Agapito
    abril 16, 2010

    El código

    Tiene un error léxico, le sobra un corchete al final.

    Quedaría así:

    Salu2

    Responder
    • VideoTutoriales
      abril 16, 2010

      Llevas razón, se me colaría al transcribirlo. Muchas gracias ya está editado.

      Un saludo!

      Responder
  2. HAX
    mayo 27, 2011

    Gracias 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 !!)

    Responder
  3. HAX
    mayo 27, 2011

    ok, 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..

    Responder
    • VideoTutoriales
      mayo 29, 2011

      Muy bueno, gracias por el aporte!

      Responder
  4. aerview
    noviembre 26, 2011

    No me ha funcionado bien..quisiera saber como eliminar el archivo me urge!

    Responder
    • VideoTutoriales
      noviembre 26, 2011

      ¿Qué te ha fallado?

      ¿Revisaste las comillas dobles? Es posible que al transcribir no ponga las comillas correctamente.

      Un saludo!

      Responder
  5. nico
    diciembre 28, 2011

    este codigo tiene un agujero de seguridad importante per esta bueno para entenderlo

    Responder
  6. VideoTutoriales
    diciembre 28, 2011

    Supongo 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 😀

    Responder
  7. Juan Rivera
    agosto 16, 2012

    que pasa si pongo
    Borrar
    o
    Borrar
    etc
    XD

    saludos.

    Responder
    • VideoTutoriales
      agosto 16, 2012

      Dependerá de los permisos de seguridad que tengas claro 🙂

      Pero es un buen apunte de seguridad, si tu usuario tiene permisos de lectura/escritura puede ser un muy mal agujero de seguridad en tu programación 🙂

      Responder
  8. frankkoq
    noviembre 30, 2012

    Como hago para caducar un archivo con esa funcion?

    Responder
    • VideoTutoriales
      noviembre 30, 2012

      Esta función es solo para eliminar un fichero, necesitarás saber primero cuando se creó el fichero, para ello utiliza la función filectime, te dejo un ejemplo:

      $nombre_archivo = ‘archivo.txt’;
      if (file_exists($nombre_archivo)) {
      echo “La última modificación de $nombre_archivo fue: ” . date(“F d Y H:i:s.”, filectime($nombre_archivo));
      }

      Luego solo tienes que poner una condicional de if (ha superado el tiempo) unlink(fichero)

      Responder
  9. oliver
    diciembre 12, 2012

    excelente este codigo…

    Responder
    • VideoTutoriales
      diciembre 13, 2012

      Gracias! esta función para eliminar ficheros con PHP es muy versatil! 🙂

      Responder
  10. Fabian
    abril 6, 2013

    Hola

    una pregunta..
    todo me anda bien.. pero cuando tengo que borrar.. necesito borrar un archivo en el directorio que me lista el php mas el mismo archivo dentro de una subcarpeta /thumbs con el mismo nombre.

    ejemplo :
    imagenes/archivo1.jpg
    imagenes/thumbs/archivo1.jpg

    Yo arme el listado con php de todas las imagenes del directorio /imagenes (evitando que liste las del subdirectorio /thumbs)

    a la hora de eliminar…

    Borrar

    HASTA ACA ANDA PERFECTO. Pero obviamente no me borra /imagenes/thumbs/archivo1.jpg

    Tengo alguna manera de que la misma accion borre el archivo con el mismo nombre pero dentro de /imagenes/thumbs ?

    O sea seria algo asi lo que quisiera hacer :

    Borrar

    Ya lleve las variables al link pero me borra unicamente el archivo de /imagenes/ y NO el de /thumbs

    Me pude explicar bien ? 😉

    Saludos y gracias
    Fabian

    Responder
    • VideoTutoriales
      abril 7, 2013

      Bueno es más sencillo en verdad, si lo que haces es llamar al fichero borrar.php y le pasas el nombre del archivo a eliminar, si sabes que las previas las tienes en thumbs con el mismo nombre, solo tendrás que lanzar dos veces el unlink con las dos rutas diferentes.

      Es decir, a borrar.php le pasas solamente “archivo1.jpg” y luego haces dos llamadas al unlink
      unlink(“./carpeta1”.$file);
      unlink(“./thumbs”.$file);

      Sin más complicación 🙂

      Responder
  11. cesar
    octubre 11, 2013

    hola!! espero me puedan ayudar, tengo muy poco tiempo utilizando php y el problema es el siguiente. tengo una pagina donde hago consultas, dentro de esta misma pagina, puedo insertar usuarios y cada usuario tiene imagenes pero son muchas imagenes por usuario estas imagenes las pongo en una carpeta con el rfc del usuario asi que son personalizadas si me equivoco al subir imagenes como las puedo eliminar espero puedan ayudarme

    Responder
    • VideoTutoriales
      octubre 13, 2013

      Si creas una carpeta para cada usuario, lo único que tienes que tener en cuenta a la hora de eliminar la imagen con unlink es pasarle también la ruta con el directorio al que pertenece, tal y como se muestra en el ejemplo:

      unlink(“./tutoriales/videotutoriales.fla”);

      Pero en tu caso, en vez de utilizar el directorio “./tutoriales/” sería poner el rfc del usuario.

      Un saludo!

      Responder
  12. Muchísimas Gracias!! Funciona perfecto!!
    octubre 29, 2013

    Muchísimas gracias men!!
    Funciona Perfecto!!

    Responder
    • VideoTutoriales
      octubre 29, 2013

      De nada, ten en cuenta lo que comentaban más arriba de la seguridad, al pasar valores por url hay que tener cuidado de que no eliminen algo que no deban 😉

      Responder
  13. BorraFichero
    abril 11, 2014

    Esta función para borrar un archivo en php me ha venido genial! no conocía la función unlink, muchas gracias, claro y sencillo 🙂

    Responder
    • videotutoriales
      abril 12, 2014

      De nada, PHP facilita con la función unlink el borrado de archivos o ficheros y así mismo lo comparto con los demás.

      Gracias por comentar!

      Responder
  14. lokuedo5000
    febrero 1, 2016

    hola como hago para q se borre el archivo en un tiempo ejemplo en un día cada semana me puedes ayudar

    Responder
    • Carlos Dk
      febrero 3, 2016

      Para ello tendrás que montar algún “demonio” o “daemon” en el servidor que lo lance, podrás utilizar cron (crontab) si es en linux, o tareas programadas de Windows. Desde PHP no podrías directamente 🙂

      Responder
  15. DCodeG
    marzo 30, 2016

    Para los que intentan subir archivos & demas les dejo este codigo que hice, pero tiene un error, a la hora de borrar los archivos los borra todos, bueno solo tienen que hacer una conexion a sus base de datos, tambien aqui les dejare el codigo.

    Conexion:

    DCodeG
    $_CONFIG[“MySQL”] = array(
    ‘HOST’ => ‘localhost’, // Host de tu DB.
    ‘USER’ => ‘root’, // Usuario de tu DB.
    ‘PASS’ => ‘blackcms’, // Contraseña de tu DB.
    ‘DB’ => ‘dcodeg’ // Tabla de tu DB.
    );

    // Conexion con MySQL
    mysql_connect($_CONFIG[“MySQL”][“HOST”], $_CONFIG[“MySQL”][“USER”], $_CONFIG[“MySQL”][“PASS”]) or die(mysql_error());
    mysql_select_db($_CONFIG[“MySQL”][“DB”]) or die(mysql_error());
    ?>

    Codigo SQL:

    CREATE TABLE IF NOT EXISTS `archivos` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `url` text NOT NULL,
    `username` varchar(100) NOT NULL,
    `na` varchar(100) NOT NULL,
    `directorio` text NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

    Codigo HTML & PHP:

    CAMBIAR FOTOS

    Imagen

    <input type="submit" value="Subir Archivos" name="boton" class="btn ” />

    = MINRK) { ?>
    ARCHIVOS SUBIDOS
    <?php
    if ($dir = opendir($directorio)) {
    while ($archivo = readdir($dir)) {
    if ($archivo != '.' && $archivo != '..') {
    echo "Archivo: “.$archivo.”

    “;
    if (isset($_POST[‘borrar’]))
    {
    $query = mysql_query(“SELECT * FROM archivos ORDER BY id DESC”);
    while ($selet = mysql_fetch_assoc($query)) {
    $un = unlink(“”.$selet[‘directorio’].””.$selet[‘na’].””);
    mysql_query(“DELETE * FROM archivos WHERE id = ‘”.$selet[‘id’].”‘”);
    if ($un) {
    echo ‘Arhivo borrado correctamente!’;
    }
    else {
    echo ‘No se pudo borrar el archivo!’;
    }
    }
    }
    }
    }
    }
    ?>

    document.getElementById(“uploadBtn”).onchange = function () {
    document.getElementById(“uploadFile”).value = this.value;
    };

    .fileUpload {
    position: relative;
    overflow: hidden;
    margin: 10px;
    }
    .fileUpload input.upload {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    padding: 0;
    font-size: 20px;
    cursor: pointer;
    opacity: 0;
    filter: alpha(opacity=0);
    }

    Responder
    • Carlos Dk
      abril 4, 2016

      Gracias por el aporte!

      Leyendo el código de borrado, he descubierto que cuando pulsas en borrar, seleccionas toda la tabla “SELECT * FROM archivos ORDER BY id DESC” por lo que el siguiente bucle: while ($selet = mysql_fetch_assoc($query)) { va a recorrer todos los archivos subidos.

      Tendrías que pasar el nombre del fichero o alguna forma de relacionarlo para que solo se elimine el fichero seleccionado.

      Espero que te aclare.
      Salud!

      Responder
      • DCodeG
        abril 4, 2016

        Gracias, igual ya lo habia arreglado, mi web: http://ubbly.us

        Responder
      • DCodeG
        abril 4, 2016

        Si quieres te ayudo a publicar cosas de programacion aqui… Buscas administradores?

        Responder
        • Carlos Dk
          abril 7, 2016

          Pues sería toda una ayuda, estaba precisamente planteando reactivar la web. Tengo algunos vídeos que subir de otros compañeros que se animaron. Toda ayuda es bien recibida 🙂

          Salud!

          Responder
          • DCodeG
            abril 7, 2016

            Vale! Entonces me admites?

          • Carlos Dk
            abril 10, 2016

            Te escribo al correo con el user y pass 😉

          • DCodeG
            abril 10, 2016

            Esta bien 😉 ah y oye antes de todo, te digo mi edad, tengo 13 años para que después no pienses mal, y soy demasiado maduro… Se mucho sobre varios lenguajes y hay.

          • DCodeG
            abril 10, 2016

            Una pregunta… Él código de los emoticones, lo hiciste en java o PHP?
            Tengo alguna idea de como hacerlo… Pero creo que lo hiciste que cuando PHP encuentre dicho texto con strrpos aparesca él html de imagen…
            Por ejemplo (ando en móvil por eso no lo hago ndesde mi pc)
            if(strrpos($_post[‘texto’], “:)”) !==false ) {
            echo “”!
            }

          • DCodeG
            abril 10, 2016

            Agregame a mi facebook, bueno te lo envió a tu correo mi facebook, cuando me envíes él user y pasa, ah y otra cosa eso se pone adentro del input de tecto

  16. Alan Colli
    diciembre 3, 2018

    Muchas gracias, buen aporte. 🙂

    Responder
    • Carlos Dk
      diciembre 3, 2018

      Gracias a tí por comentar 🙂

      Responder
  17. Xagapito
    febrero 2, 2019

    Gracias por explicar como borrar con unlink, aunque como bien han comentado, hay que tener cuidado y que no se pueda mal utilizar pasando por la url archivos que no sean los que queremos eliminar.

    Por lo demás, muchas gracias por la ayuda, sencillo para eliminar archivos con PHP.

    Responder
    • Carlos Dk
      febrero 3, 2019

      Gracias a ti por comentar, sí, es cierto, en esa url se pasa el nombre del archivo, si no está correctamente securizado por carpeta/usuario se podría armar gorda y eliminar archivos utilizando ese código PHP.

      Salud!

      Responder
  18. Maria José
    julio 2, 2019

    He estado intentando eliminar imágenes con unlink y me da este error
    “No tiene permiso para acceder a /admin/delete.php en este servidor.”
    ¿Cómo lo puedo hacer? Muchas gracias!

    Responder
    • Carlos Dk
      julio 3, 2019

      El problema no es en sí unlink, el problema es de permisos de usuario. Cambia la ruta donde estás alojando ese archivo o prueba a darle permisos 777 a tu usuario. Desde filezilla o cualquier gestor FTP puedes gestionar los permisos.

      Ya me dices si se te ha solucionado.
      Salud!

      Responder
      • Maria José
        julio 3, 2019

        Muchas gracias por responder! Ya pude hacer que funcionara, el tema ahora es que en la página principal mis imágenes las muestro con php asi “../images/products/.jpg” . Puse la función unlink dentro de una página llamada “delete.php”, probé borrando una imagen directamente con su nombre y funciona, pero cómo lo hago si quiero eliminar diferentes imágenes? no puedo colocar una por una su nombre ya que son muchas 🙁 .

        Responder
        • Carlos Dk
          julio 3, 2019

          Buenos días!
          Pues dependerá de la funcionalidad, si estás mostrando una lista de imágenes, puedes poner un enlace como explico en el tutorial delete.php?imagen=nombreimagen.jpg

          La tomas de la variable $imagen = $_POST[‘imagen’] y la utilizas para pasárselo a la función de delete.php 😉

          Ten en cuenta de pasar validaciones para que no puedan atacar el sistema, ya que pueden incluir en la variable imagen además de nombreimagen.jpg algo como ../../../index.php y te eliminarían ese archivo 😉

          Aunque lo que decía antes de permisos es importante, revísalos.

          Espero ayudarte.
          Salud!

          Responder
  19. Maria José
    julio 3, 2019

    ../images/products/ .jpg (esta era la ruta de imagen)

    Responder
  20. Nikolas
    abril 17, 2020

    Hola. No puedo eliminar ficheros que en su nombre contengan la letra ñ.

    Mucash gracias

    Responder
    • Carlos Dk
      abril 17, 2020

      Buenas Nikolas, tendrás que revisar la codificación de tu archivo PHP y como está trabajando, posiblemente estés codificándolo de manera diferente y cuando recoges la Ñ te lo transforme en otra cosa diferente que no sabe interpretar correctamente.

      Lo más común es usar UTF-8 para los codecs latinos

      Ya me dices.
      Salud!

      Responder

Leave A Reply Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Busca en la web

Recomiendo

Software ERP empresarial

Categorías

  • Miscelanea (129)
  • Tutoriales formativos (622)

Ponte en contacto

+34 654380491

hola@carlosdk.com

Torre del Mar (Málaga)

Enlaces rápidos

  • Universo Dk
  • Contacto
  • Blog

Soy social

  • Twitter
  • Linkedin
  • Youtube

Newsletters

Suscríbete para enterarte de lo último que estoy haciendo. No lo usaré para enviarte SPAM inútil 😉

Esta web la he diseñado con cariño en Andalucía por Carlos Dk