Cita:
Iniciado por esjuanma 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