Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2007, 01h26   #1
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Par défaut Erreur avec unlink que je ne comprend pas

J'ai un formulaire où je peux supprimer des fichiers. J'utilise le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<form action="?" method="post" id="delpage">
	<input type="hidden" name="a" id="a" value="delete" />
	Page name:
	<select name="dname" id="dname">
	<?php 
		if ($dh = opendir('.')) {
			while (($file = readdir($dh)) !== false) {
				if (is_file($file)){
					echo '<option value="' . substr($file,0,strlen($file) - 4) . '">' .  substr($file,0,strlen($file) - 4) . '</option>';
				}
   		}
      closedir($dh);
	} 
	?>
	</select><br/>
	<input type="submit" name="delete" id="delete" value="Delete File"  />
	<br/><br/>
</form>
Lorsque je soumet le formulaire, il supprime la page faq.php pour essayer, il me dit la chose suivante:

Citation:
Warning: unlink(faq.php) [function.unlink]: No such file or directory in /fpgs/fpgshttpd/kwn/files.php on line 9
mais pourtant il la supprime quand même...comment faire pour éviter cela?

Le code pour supprimer la page est

Code :
1
2
3
4
 
if($_POST['a'] == "delete"){
	unlink($_POST['dname'] . ".php");
}
Merci!
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 02h41   #2
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
Code :
1
2
 
@unlink($_POST['dname'] . ".php");
tu n'aurras plus d'erreur normalement...
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 05h08   #3
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Oui en effet, merci!
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 05h12   #4
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
Par défaut Arrg

Citation:
Envoyé par max44410
Code :
1
2
 
@unlink($_POST['dname'] . ".php");
tu n'aurras plus d'erreur normalement...
Quel plus mauvais conseil donner que celui de masquer les erreurs au lieu de les traiter ou de les prevenir ?

Code :
1
2
3
4
 
 if($_POST['a'] == "delete" && file_exists($_POST['dname'] . ".php")) {
     unlink($_POST['dname'] . ".php"); 
}
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h44   #5
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
Citation:
Envoyé par stunti
Quel plus mauvais conseil donner que celui de masquer les erreurs au lieu de les traiter ou de les prevenir ?

Code :
1
2
3
4
 
 if($_POST['a'] == "delete" && file_exists($_POST['dname'] . ".php")) {
     unlink($_POST['dname'] . ".php"); 
}
si il n'a pas les droits sur le fichiers il aurra un message d'erreur ...
ca revient au meme.
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h17   #6
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Peut être qu'ultimement la solution serait d'essayer avec un try catch (que je n'ai jamais utilisé en PHP). Je pourrais ainsi gérer si l'utilisateur a des droits et si le fichier existe.
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h34   #7
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Mouais ca ne semble pas fonctionner...alors l'erreur n'est pas une exception.

Mais pourquoi fait-il cela? Si je connais cette réponse peut être que je peux le régler?
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h48   #8
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
Citation:
Envoyé par Prosis
Mais pourquoi fait-il cela? Si je connais cette réponse peut être que je peux le régler?
Citation:
No such file or directory
pas de fichier ou de répertoire... c'est la réponse
cela peut également venir des permissions que tu as sur les fichiers
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h09   #9
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
En fait, le fichier est créé par le script qui lui donne 644. Lorsque j'essaie de le détruire, le fichier existe déjà et il le détruit. C'est comme s'il tentait de le détruire 2 fois.
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 00h38   #10
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Code :
1
2
3
4
 
if(file_exists($_POST['dname'] . ".php")){
	unlink($_POST['dname'] . ".php");
}
Problème réglé!
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h14   #11
Membre confirmé
 
Avatar de max44410
 
Étudiant
Inscription : juin 2003
Messages : 426
Détails du profil
Informations personnelles :
Âge : 29

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2003
Messages : 426
Points : 259
Points : 259
Envoyer un message via MSN à max44410 Envoyer un message via Skype™ à max44410
je suis pas d'accord ... si il n'a pas les droits, meme si le fichier existe, il aurra un message d'erreur.
__________________
Venez voir par là...
max44410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h33.


 
 
 
 
Partenaires

Hébergement Web