Unlink: argg ça interprete..... et pourtant

Le forum de l'Annuaire Francophone des Scripts CGI: CGI : Problème avec un script: Unlink: argg ça interprete..... et pourtant

Frederic

mardi 05 septembre 2000 - 16h15
Bonjour,

Voici un script qui pourrait faire peur, il doit permettre de supprimer un fichier texte présent sur un serveur (dans le repertoire cgi-bin ou il est executé).

#!/usr/local/bin/perl
require ("cgi-lib.pl");
&ReadParse(*form);
$file = $form{'file'
;}
unlink ('$file') || die ("Erreur de suppression \n");

Ce mini script est accessible depuis un autre script (lui meme protégé par mot de passe), il semble s'executer correctement à la seule imperfection près qu'il ne supprime pas le fichier........

A vot' bon coeur..... j'accepte aussi une solution qui consisterait à ouvrir le fichier texte (.txt)et à en supprimer toutes les lignes.

Frédéric (Frédéric)

mercredi 06 septembre 2000 - 09h07
Bonjour,

Ma premiere question est êtes vous certain que le script est exécuté ?
Essayez éventuellement de faire unlink($file) (sans les '').

Frédéric

mercredi 06 septembre 2000 - 17h40
Mais oui il s'execute.....le petit canaillou. J'ai corrigé avec

#!/usr/bin/perl
require ("cgi-lib.pl");
print "Content-type: text/html^#92;n^#92;n";
$file = "quiz_last.txt";
unlink ($file);
print "Le fichier est supprimé!!!!!^#92;n";

......cette fois ça à l'air de fonctionner. mais c'eszt une peu pénible comme technique

Au fait super ton forum.....

Frédéric (Frédéric)

mercredi 06 septembre 2000 - 18h31
Pourquoi pénible ?
par ce qu'il faut coder le nom du fichier a supprimer dans le programme ?
Si ca fonctionne quans le nom du fichier est codé dedans et pas quand il est donné en paramètre, c'est peut etre par ce qu'il n'est pas correctement passé en parametre ..

frederic

mercredi 06 septembre 2000 - 22h50
heu faut'il croire que mon formulaire n'est pas correct??? (bon comme j'ai supprimé l'original je dirais que tu as raison)

Pénible parce-que cette technique m'oblige a coder le nom du fichier en dur...evidement ça limite les risques....
...
es ce qu'il existe une fonction perl qui permette de faire l'equivalent d'un copy sous dos?

Frédéric (Frédéric)

jeudi 07 septembre 2000 - 22h43
Il y a 3 possiblités :
1)le faire a la main en ouvrant le fichier source en input et en créant un nouveau fichier dans lequel vous recopiez le contenu du fichier source
2) utiliser un appel systeme pour le faire : system("copy $source $destination"); #sous dos
system("cp $source $destination"); #sous unix
ou $source et $destination contiennent le nom des fichiers source et destination
3) utiliser le module File::Copy :
use File::Copy;
copy($source,$destination) or die "J'ai loupé la copie : $!";

pour déplacer / renommer il faut faire :
move($anciennom,$nouveaunom) or die "J'ai loupé le déplacement / changement de nom : $!";

voila voila


Ajouter un message


Ceci est une zone publique. Si vous n'avez pas de compte, entrez votre nom dans le champ "Identificateur" et laissez le mot de passe vide. Votre adresse E-mail est facultative.
Identificateur :  
Mot de passe :
E-mail :
Poster "anonymement"