Foros del Web » Programando para Internet » Javascript »

Eliminar Archivos con PHP y JS

Estas en el tema de Eliminar Archivos con PHP y JS en el foro de Javascript en Foros del Web. Hola amigos, no supe bien donde colocar éste tema si en PHP o JS ya que, nose qué metodo podría venir mejor para conseguir lo ...
  #1 (permalink)  
Antiguo 21/02/2011, 05:05
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Eliminar Archivos con PHP y JS

Hola amigos, no supe bien donde colocar éste tema si en PHP o JS ya que, nose qué metodo podría venir mejor para conseguir lo que en el título se refiere.

De todas formas muevanlo donde sea correcto y disculpen.


Os pego el code que tengo documentado para que veais lo que quiero hacer:



-- Script JS (mirar después del script PHP, please)


Código:
<SCRIPT type="text/javascript" LANGUAGE="javascript">

function confirmacion(archivoEliminar) {
    if (confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.'))  
    {
		alert(archivoEliminar);
		var archivo;
		var archivo = new ActiveXObject("Scripting.FileSystemObject");
		eliminar = new File(archivoEliminar);
		eliminar.remove();
		
		
		if (archivo.remove())
		{
			alert('El fichero ha sido borrado satisfactoriamente');
		} else {
			alert('El fichero no puede ser borrado');
		}
	} else {
	alert('no se ha aceptado');
	}
}
</SCRIPT>

-- Script PHP

Código:
$archivoURL = count(explode("-split-", $extraccionURL))-1;

/* Aquí creamos un contador de archivos que extraemos todos ellos (con ruta completa) de la variable $extraccionURL y los separamos mediante el split*/



for ($i = 0; $i < $archivoURL; $i++){

/* con el indice $i, podemos obtener la propiedad que desemos de cada archivo único y trabajar con él */


$archivoSeparado = explode("-split-",$extraccionURL);

/* Aquí asignamos a $archivoSeparado cada uno de los archivos (con ruta completa) extraidos de la variable $extraccionURL */


$archivoEliminar = $archivoSeparado[$i]; 

/* Gracias al recorrido de la variable $i, podemos asignar cada elemento a la variable $archivoEliminar para trabajar con ella refiriendonos a éstos archivos */


if (!empty($archivoEliminar)) {
	
/* Aquí vamos a verificar que $archivoEliminar existe y además tiene valor, en caso de ser cierto procederemos a crear un botón por cada archivo */


echo "Desea eliminar el archivo $archivoEliminar";

echo '<input type="button" onclick="javascript:confirmacion(\''.$archivoEliminar.'\');" value="Eliminar"><br /><br />';

/* éste boton es el encargado de llamar al evento de confirmacion(); cuando es pulsado (onclick) y enviarle la ruta del archivo a eliminar almacenada en $archivoEliminar. */
	}
}


En caso de querer eliminar el archivo mediante JS, he probado como está arriba, también con la función "Delete();" o bien "DeleteFile();" entre otros, pero los archivos ni se inmutan.

Viendo que los archivos siguen ahí, he pensado en que, de alguna forma el script JS devuelva a PHP un valor que indique que el usuario ha aceptado y así probar mediante la funcion en php "unlink();"


Nose que fayo puedo tener pero me está causando problemas.


Espero que puedan ayudarme y si conseguimos arreglarlo, que al menos le sirva a alguien de ayuda.


Gracias y Salu2 :D
  #2 (permalink)  
Antiguo 25/02/2011, 04:56
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Eliminar Archivos con PHP y JS

¿No hay ninguna respuesta?


Bueno al menos pongo los avances de lo que he hecho:


JS


Código:
var conexion;
function confirmar(archivoEliminar)
{
  if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.'))
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?', true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    conexion.send("dato="+archivoEliminar);

  }
}


PHP


Código:
if (!empty($_POST['dato'])) {
  echo '<div id="proceso"></div>';
  echo '<a href="/''.unlink($archivoEliminar).'/'" onclick="javascript:return confirmar();"></a> '.$archivoMostrar.'<br /><br />';
}

Lo que no sabría es interpretarlo de tal forma que cuando pulse el botón de eliminar y pase la ruta completa "?dato=ruta_completa_del_archivo.extension"... . PHP esté atento para verificar que se le ha pasado la ruta.

Pero directamente elimina los archivos.... mientras tanto seguiré viendo las ayudas que me aconsejeis y poniendo por aquí si he conseguido algún resultado.


Espero que alguien se anime a aportar algo para que al menos me dé alguna idea.


Gracias y Salu2
  #3 (permalink)  
Antiguo 25/02/2011, 08:46
 
Fecha de Ingreso: febrero-2011
Ubicación: Avellaneda, Buenos Aires
Mensajes: 39
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Eliminar Archivos con PHP y JS

Hola.
Por lo que se entiende, lo que querés es eliminar archivos que están en el servidor, pidiendo antes una confirmación con Javascript.
Para eliminar esos archivos, la única forma de hacerlo es con PHP.
El código Javascript que tenés ahí, es para eliminar archivos de la PC del visitante.
Además ese método usa el ActiveXObject, de IE, por lo que estaría limitado exclusivamente a Internet Explorer (es el único navegador que puede eliminar archivos del pc del cliente).

En resumen, aunque la confirmación para eliminar requiera algo de Javascript, lo más importante es la función unlink() de PHP, que es la encargada de eliminar el archivo.
Te dejo el link con la documentación oficial de esa función:
http://www.php.net/manual/es/function.unlink.php

Saludos!
  #4 (permalink)  
Antiguo 25/02/2011, 12:33
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Eliminar Archivos con PHP y JS

Cita:
Iniciado por esjuanma Ver Mensaje
Hola.
Por lo que se entiende, lo que querés es eliminar archivos que están en el servidor, pidiendo antes una confirmación con Javascript.
Para eliminar esos archivos, la única forma de hacerlo es con PHP.
El código Javascript que tenés ahí, es para eliminar archivos de la PC del visitante.
Además ese método usa el ActiveXObject, de IE, por lo que estaría limitado exclusivamente a Internet Explorer (es el único navegador que puede eliminar archivos del pc del cliente).

En resumen, aunque la confirmación para eliminar requiera algo de Javascript, lo más importante es la función unlink() de PHP, que es la encargada de eliminar el archivo.
Te dejo el link con la documentación oficial de esa función:
http://www.php.net/manual/es/function.unlink.php

Saludos!


Hola esjuanma, gracias por contestar, lo que dices es totalmente correcto.

Veamos por partes:

1 - Me fijé en lo de ActiveXObject y lo eliminé.

2 - Igualmente me informaron igual que tu, que el codigo proporcionado era únicamente para eliminar archivos del lado del cliente, por ello he modificado el código por completo para que javascript unicamente se encargue de devolver si la confirmación ha sido aceptada o no a PHP, y unlink se encargue de eliminar el archivo como bien dices.


Dicho esto, el código quedaría así:



JS:

Código:
<SCRIPT>

var conexion;
function confirmar(archivoEliminar)
{
  if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.')) 
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?', true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    conexion.send("dato="+archivoEliminar); 

  } else {
	conexion="";
	conexion.send("dato="); 
  }
}
function dibujar()
{
  if(conexion.readyState == 4)
    document.getElementById("proceso").innerHTML = 'Archivo eliminado';
  else
    document.getElementById("proceso").innerHTML = 'Eliminando';
}

//Funcion que evita problemas con navegadores y crea la peticion ajax
//Idea original de la funcion extraida de ajaxya.com.ar
function HttpRequest()
{
  var xmlHttp=null;
  if (window.ActiveXObject)
  {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else
  {
    if (window.XMLHttpRequest)
    {
      xmlHttp = new XMLHttpRequest();
    }
  }
  return xmlHttp;
}
</SCRIPT>


PHP


Código:
$archivoURL = count(explode("-split-", $extraccionURL))-1; 

/* Aquí creamos un contador de archivos que extraemos todos ellos (con ruta completa) de la variable $extraccionURL y los separamos mediante el split*/


for ($i = 0; $i < $archivoURL; $i++) {

/* con el indice $i, podemos obtener la propiedad que desemos de cada archivo único y trabajar con él */


$urlSeparado = explode("-split-",$extraccionURL); 
/* Aquí asignamos a $urlSeparado cada uno de los archivos (con ruta completa) extraidos de la variable $extraccionURL */


$archivoSeparado = explode("<br>",$archivos); /* Aquí asignamos a $archivoSeparado en enlace <a href  de cada uno de los archivos extraidos de la variable $archivos */


$archivoMostrar = $archivoSeparado[$i];


$archivoEliminar = $urlSeparado[$i]; /* Gracias al recorrido de la variable $i, podemos asignar cada elemento a la variable $archivoEliminar para trabajar con ella refiriendonos a éstos archivos */


$_POST['dato'] = $archivoEliminar;


if (!empty($_POST['dato'])) {
  echo '<div id="proceso"></div>';
  echo '<a href="\''.unlink($archivoEliminar).'\'" onclick="return confirmar(this);"></a>'.$archivoMostrar.'<br /><br />';
}


Así queda todo, el problema está en que según recargo la página elimina los 2 archivos directamente, sin realizar la confirmación de JS ni nada.


Algo me da por pensar que el problema está en que el valor POST no nace limpio y debería en el HREF hacer referencia a eliminar la confirmación de JS.


Algo así pero con las comillas en condiciones... :P

Código:
echo '<a href="\''.unlink("javascript:return confirmar(\''.$archivoEliminar.'\');").'\'"></a>'.$archivoMostrar.'<br /><br />';

PD: ¿algo así?¿


Bueno ya me contareis... Gracias y Salu2
  #5 (permalink)  
Antiguo 05/03/2011, 23:36
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Eliminar Archivos con PHP y JS

Actualizo lo que llevo por si a alguien le sirve de ayuda o se estira una ayuda...



Código:
$archivoURL = count(explode("-split-", $extraccionURL))-1; /* Aquí creamos un contador de archivos que extraemos todos ellos (con ruta completa) de la variable $extraccionURL y los separamos mediante el split*/


for ($i = 0; $i < $archivoURL; $i++) {
/* con el indice $i, podemos obtener la propiedad que desemos de cada archivo único y trabajar con él */

$urlSeparado = explode("-split-",$extraccionURL); /* Aquí asignamos a $urlSeparado cada uno de los archivos (con ruta completa) extraidos de la variable $extraccionURL */
$archivoSeparado = explode("<br>",$archivos); /* Aquí asignamos a $archivoSeparado en enlace <a href  de cada uno de los archivos extraidos de la variable $archivos */
$archivoMostrar = $archivoSeparado[$i];
$archivoEliminar = $urlSeparado[$i]; /* Gracias al recorrido de la variable $i, podemos asignar cada elemento a la variable $archivoEliminar para trabajar con ella refiriendonos a éstos archivos */


if ($_POST['dato'] == $archivoEliminar) { unlink($_POST['dato']); }
	echo '<div id="proceso"></div>';
	echo "<input type=\"image\" width=\"16\" height=\"16\" border =\"0\" src=\"cross.png\" onClick=\"
	var conexion;
	confirmar();
	
function confirmar() {
  if(confirm('¿Realmente desea eliminar el archivo por completo? \\n\\n NOTA :: El archivo dejará de existir para siempre.')) 
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?', true);
    conexion.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    conexion.send=('dato=$archivoEliminar');

  } else {
	conexion='';
	conexion.send('dato='); 
  }
}
function dibujar()
{
  if(conexion.readyState == 4)
    document.getElementById('proceso').innerHTML = 'Archivo eliminado';
  else
    document.getElementById('proceso').innerHTML = 'Eliminando';
}

//Funcion que evita problemas con navegadores y crea la peticion ajax
//Idea original de la funcion extraida de ajaxya.com.ar
function HttpRequest()
{
  var xmlHttp=null;
  if (window.ActiveXObject)
  {
    xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
  }
  else
  {
    if (window.XMLHttpRequest)
    {
      xmlHttp = new XMLHttpRequest();
    }
  }
  return xmlHttp;
}  
\"> $archivoMostrar<br /><br /><br />";
}
  #6 (permalink)  
Antiguo 08/03/2011, 10:40
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Eliminar Archivos con PHP y JS

Debido a que en ésta sección no consigo respuestas... me he tomado la libertad de "duplicar" el tema en la sección de PHP (ésta modificación la indico en el tema)


AQUI


Si algún moderador u administrador está leyendo esto ruego que me perdone y elimine el Tema de la sección a la que no corresponda o en su defecto espere la solución del mismo debate para posteriormente eliminarlo.


He de decir que necesito ayuda en éste debate por lo que espero que hagan lo más educado.


Gracias y Saludos.

Etiquetas: eliminar, js, php
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 17:41.