par
Jerems60 » 14 mars 2010, 14:50
Salut,
c'est en effet possible de fusionner les deux scripts sur la même page, mais il n'y pas forcemment d'intérêt à cela. Généralement, il vaut mieux faire appel à des scripts qui se trouve dans des pages séparées. Cela facilite la relecture du code.
Mais si tu tiens vraiment à mettre les 2 sur la même page, tu vas devoir faire appel à la même page dans ton attribut action de la balise form.
Ensuite tu vas créer une condition pour savoir si tu dois afficher le formulaire de saisie ou bien la liste des fichiers supprimés si le formulaire a été saisi. Pour ça, tu dois te servir des fonctions isset() et empty() de php.
Pour mettre plusieurs fichiers à supprimer en temps, il existe la fonction explode() de php qui permet de créer un tableau à partir d'une chaîne. Ici on va dire qu'à chaque saut de ligne correspond un fichier à supprimer. Je te laisse un bout de code, car un exemple vaut mieux qu'un long discours.
<?php
//zone à afficher si le formulaire a été saisi
if(isset($_POST['avirer']) && !empty($_POST['avirer'])) { //isset s'assure que le champ a été soumis, et !empty que le champ n'est pas vide
?>
<h1>le résultat</h1>
<?php
//On récupère la liste des fichiers à effacer
$liste_avirer=explode("\n",$_POST['avirer']); //on créé un tableau contenant la liste des fichiers à effacer (le délimieur est le retour à la ligne ("\n") à remplacer par exemple par "," si on souhaite séparer les fichiers à supprimer par des virgules
//on boucle les éléments du tableau
foreach ($liste_avirer as $item) {
$item=trim($item); // on vire les éventuels espaces avant ou à la fin du nom du fichier
$nom_dossier=''; //mettre ici le chemin du dossier exemple 'mon_dossier/', on ne met rien si le script se trouve dans le même répertoire que ce script comme ici
$nom_extension='.kml'; // nom de l'extension des fichiers à supprimer
$nom_fichier_avirer=$nom_dossier.$item.$nom_extension;
//on regarde si le fichier à supprimer existe bel et bien
if(file_exists($nom_fichier_avirer)) {
$resultat=unlink($nom_fichier_avirer);// si c'est le cas on supprime
echo ($resultat)?'<b>'.$nom_fichier_avirer.'</b> a bien été supprimé <br />':'<b>'.$nom_fichier_avirer.'</b> n\'a pas pu être supprimé. Une erreur s\'est produite. <br />';
} else {
echo '<b>'.$nom_fichier_avirer.'</b> n\'a pas pu être supprimé. Le fichier n\'existe pas. <br />';;
}
}
} else { // si le formulaire n'a pas été saisi, on l'affiche
?>
<h1>le formulaire</h1>
<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<textarea name="avirer" value="" rows="10"></textarea>
<input type="submit" value="Supprimer">
</form>
<?php
}
?>
Pour ce qui est de la sécurité, un script de ce genre qui serait en ligne sur internet et accessible à n'importe est fortement risqué (surtout si les fichiers sont nécessaires au bon fonctionnement d'une application) le mieux serait de mettre cette page dans un dossier protégé par un .htacces.
Ah j'oubliais, je ne sais pas ce qu'est cet attriubut "autocomplete" dans ta balise input mais ce n'est pas un attribut standard, donc mieux vaut le virer et utiliser du code javascript qui respecte les standards.
En espérant t'avoir aidé,
Jérémie