IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur avec unlink que je ne comprend pas


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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:

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($_POST['a'] == "delete"){
    	unlink($_POST['dname'] . ".php");
    }
    Merci!

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @unlink($_POST['dname'] . ".php");
    tu n'aurras plus d'erreur normalement...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Oui en effet, merci!

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut Arrg
    Citation Envoyé par max44410
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    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.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    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?

  8. #8
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par Prosis
    Mais pourquoi fait-il cela? Si je connais cette réponse peut être que je peux le régler?
    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

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    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.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(file_exists($_POST['dname'] . ".php")){
    	unlink($_POST['dname'] . ".php");
    }
    Problème réglé!

  11. #11
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    je suis pas d'accord ... si il n'a pas les droits, meme si le fichier existe, il aurra un message d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur du W3C que je ne comprends pas
    Par macbida dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/12/2011, 22h44
  2. Message d'erreur du compilateur que je ne comprends pas
    Par ram-0000 dans le forum Visual C++
    Réponses: 6
    Dernier message: 21/07/2010, 13h45
  3. Erreur de compilation que je ne comprends pas
    Par id_rima dans le forum Débuter
    Réponses: 10
    Dernier message: 02/06/2010, 19h23
  4. [MySQL] J'ai une erreur (requete sql)que je ne comprends pas du tout Mysqlfetcharray()
    Par metou2703 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/09/2009, 13h52
  5. Erreur avec SQL Serveur, je ne comprend pas !
    Par kmaniche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 24/01/2007, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo