Le problèmeSupprimer les fichiers avec AJAX/PHP
Je veux supprimer un fichier avec AJAX/PHP
.
Mais le php dit que le nom de fichier que j'envoie avec AJAX n'est pas un fichier, mais quand je vais directement sur le lien je peux supprimer les fichiers. Vérifiez mon PHP actuel, j'ai mis dans l'instruction IF/ELSE pour vérifier si la chaîne est un fichier avec: is_file
, le résultat est false
.
Sans is_file
dit ceci:
Warning: unlink("image.jpg") [function.unlink]: Invalid argument in C:\wamp\www\images\users\delete.php on line 8
Le fichier qui appelle ajax est dans le dossier où se trouvent les fichiers trop ce que je veux supprimer.
Le PHP
<?php
// I save the file sources from the URL what was sent by AJAX to these variables.
$photo_id = $_GET['photo_id'];
$thumbnail_id = $_GET['thumbnail_id'];
function deletePhotos($id){
// If is a file then delete the file.
if(is_file($id)){
return unlink($id);
// Else show error.
} else {
echo $id . " is not a file, or there is a problem with it.<br />" ;
}
}
if(isset($photo_id)){
deletePhotos($photo_id);
}
if(isset($thumbnail_id)){
deletePhotos($thumbnail_id);
}
?>
L'AJAX
function deletePhoto(photo, thumbnail){
var photos = encodeURIComponent(photo);
var thumbnails = encodeURIComponent(thumbnail);
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("media").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://192.168.2.104/images/users/delete.php?photo_id=\""+photos+"\"&thumbnail_id=\""+thumbnails+"\"", true);
xmlhttp.send();
}
S'il s'agit de votre script de production, il présente un sérieux défaut de sécurité: tout le monde peut dire au script de supprimer/dissocier tout fichier accessible en écriture sur le serveur –