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 :

Problème de chemin


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut Problème de chemin
    bonsoir,

    j'ai un script qui permet d'afficher les fichiers d'un dossier, de les selectionner, et de supprimer ce de mon choix (je l'ai pris deja tout fait, j'ai juste modif le chemin ($adresse)

    Bon, mon opendir() marche bien, la page m'affiche bien les fichiers présents dans le dossier "planning_licence". J'en conclue que mon $adresse est bon.

    Par contre quand je clique sur "supprimer" je me retrouve avec une erreur 404 (testé online aussi) car il essaye de trouver le fichier ici :
    Normal qu"il ne le trouve pas, mon fichier est dans localhost/planning_licence/
    Quel endroit faut il modifier s'il vous plait ?

    (au passage, ce script de gestion est super pour celui qui veut la simplicité)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php 
    //J'ai retiré les commentaires pour que ce soit plus lisible...
    $adresse= "../secu/planning_licence/";
    if(isset($_GET['nom'])) //Si $_GET['nom'] existe, on supprime le fichier...
    {
         if ($Fichier != "." && $Fichier != "..") 
         {
              $nom=''.$adresse.$_GET['nom'].'';
              unlink($nom);
              echo 'Le fichier "'.$_GET['nom'].'" a été éffacé !<br>';
         }
    } 
    $dossier = opendir($adresse); //Ouverture du dossier. 
    echo '<fieldset><legend>Liste des fichiers</legend><br>'; //Ouverture de fieldset 
    //(Fieldset permet de faire des cadres avec légende intégrée en haut a gauche. 
    //C'est très simple à utiliser et ça permet de répartir les formulaires en plusieurs parties et donc d'accroître leur lisibilité !). 
    while ($Fichier = readdir($dossier)) //Affichage...
    {  
         if ($Fichier != "." && $Fichier != "..") 
         { 
              echo '<a href="voir_fichiers.php?nom='.$Fichier.'">Supprimer</a> => <a href='.$adresse.$Fichier.' target="_blank">'.$Fichier.'</a><BR>'; 
         }
    }
    closedir($dossier); //Fermeture du dossier. 
    echo '<br></fieldset>'; //Fermeture du fieldset.
     
     
    ?>

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Bon, j'ai reussi a faire prendre le bon chemin en changeant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<a href="planning_licence/voir_fichiers.php?nom='.$Fichier.'">Supprimer</a> => <a href='.$adresse.$Fichier.' target="_blank">'.$Fichier.'</a><BR>';
    Quand je click sur supprimer il va donc a la bonne adresse :
    //http://localhost/secu/planning_licence/voir_fichiers.php?nom=planning_du_testtouille2.xls
    Mais j'ai toujours l'erreur 404... alors que le fichier planning_du_testouille2.xls est bien présent dans ce dossier planning_licence..

    Je pense que mon erreur vient tres probablement d'une des lignes vers la fin (echo '<a href="planning_licence/voir_fichiers.php?nom=....)
    Ou alors c'est un probleme au niveau du nom..
    Je ne comprens pas, si vous pouviez m'aider. Merci beaucoup

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Si on prend se qui est dit dans la doc Php, les exemple de codes :
    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
     
    if ($handle = opendir('/chemin/vers/fichiers')) {
        echo "Directory handle: $handle\n";
        echo "Files:\n";
     
        /* Ceci est la façon correcte de traverser un dossier. */
        while (false !== ($file = readdir($handle))) {
            echo "$file\n";
        }
     
        /* Ceci est la MAUVAISE façon de traverser un dossier. */
        while ($file = readdir($handle)) {
            echo "$file\n";
        }
     
        closedir($handle);
    }
    Tu n'utilise donc la MAUVAISE façon de traverser un dossier.
    Faudrait peut être corriger ça en 1er

    Aussi, tu mets un lien qui pointe vers un fichier de type XLS.
    Qu'il y ait ou pas erreur, de toute manière un navigateur ne pourra pas afficher le contenu, car un navigateur est fait pour interpréter un document HTML, ou XML.
    Du moins j'en doute fort qu'il puisse interpréter un XLS.
    Un XLS ça s'ouvre avec Excel, ou éventuellement OpenOffice.

    A mon sens, il n'est pas utile d'insister plus.


    Pour la suppression, fait des echo avant la fonction unlink().
    Puis la condition sur . et .. ne sert à rien, car tu l'as déjà filtrer auparavant.
    Tu pourrais te contenter de vérifier l'existence du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $nom = $_GET['nom'];
    if (file_exists($adresse.$nom)) {
    	echo 'Ok / Le fichier : "'.$adresse.$nom.'"<br>';
    	unlink($adresse.$nom);
    	echo 'Le fichier "'.$nom.'" a été effacé !<br>';
    }

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Mais j'ai toujours l'erreur 404... alors que le fichier planning_du_testouille2.xls est bien présent dans ce dossier planning_licence..
    Bonjour,

    rajoutes un "/" avant planning_licence pour faire référence à la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="/planning_licence/voir_fichiers.php?nom='.$Fichier.'">Supprimer</a> => <a href='.$adresse.$Fichier.' target="_blank">'.$Fichier.'</a><BR>';
    Faudrait peut être corriger ça en 1er
    Les deux méthodes fonctionnent, l'une est juste plus optimisée car elle compare également le type (booléen). On corrige ses erreurs avant, ensuite on optimise

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Vu qu'apparement les 2 méthodes sont censés fonctionner, j'ai gardé ma méthode.

    Pour tomasR, j'ai bien rajouté le slash. L'adresse dans le navigateur est bonne il n'y a pas de souci de ce coté la. J'ai essayé avec un xls et aussi une image jpg, rien a faire il ne trouve pas le fichier (peut etre comme la dit runcodephp, peut etre essaye t'il d'ouvrir le fichier ? Je ne souhaite pas l'ouvrir je souhaite juste le supprimer )

    Pour runcodephp, j'ai mis ce que tu m'as dit. Mais j'ai des "erreurs qui apparaissent sur ma page deletel.php :

    Notice: Undefined index: nom in D:\Programmes\wamp\www\secu\deletel.php on line 4
    Ok / Le fichier : "../secu/planning_licence/"

    Warning: unlink(../secu/planning_licence/) [function.unlink]: Permission denied in D:\Programmes\wamp\www\secu\deletel.php on line 7
    Le fichier "" a été effacé !
    La ligne 4 correspond à ton $nom

    Bref, je vais continuer a tatonner, votre aide est toujours la bienvenue, je vous remercie encore

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    J'ai fait un test en enlevant cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/secu/planning_licence/voir_fichiers.php?nom='.$Fichier.'">Supprimer</a> =>
    Donc sans ca, j'ai toujours mes liens ds fichiers, mais plus les liens "supprimer", normal quoi, et quand je click sur les liens, mes xls s'ouvrent, normal quoi

    J'ai donc l'impression que l'erreur se trouve uniquement dans ce petit bout de code au dessus. C'est très bisarre car l'url est bon dans la fenetre du navigateur. Ou alors c'est une erreur dans une autre partie du code qui engendre cette erreur...
    Autre piste : lors de la navigation sur mon site, il y a un mot de passe a entrer pour acceder a la partie "secu", et mes fichiers a supprimer sont dans cette partie. Est ce que ca peut venir de la, sachant que pourtant, je suis déja dans cette partie, et donc identifié ?

    nb : on m'a dit que le http ne permet pas d'utiliser unlink. Info, intox ?

    nb2 : nb : dans la ligne de code ci dessus, ca indique /voir_fichiers.php?nom... Mais je n'ai aucune page qui porte le nom de voir_fichiers.php. Est ce que ca peut etre ca ?

    Edit : j'ai donc modifié en /?nom=.... (j'ai donc juste enlever "voir_fichiers.php") et la ca bug pas, ca m'amene dans le dossier "licence_planning". Cependant ca n'efface en rien mes fichiers ... Comment faire pour qu'ils soient supprimés ?

    Merci

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Je ne comprends pas, tu dis au dessus que planning_licence est dans localhost et là tu nous montres un lien où il est situé dans le dossier /secu/, essayes de remettre çà d'équerre.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Non non, le dossier planning_licence est bien dans le dossier "secu" (qui lui est dans le localhost).
    Dans mon message précedent j'ai peut etre ecris /nom? ... ou quelque chose comme ca pour ne pas réécrire ce qu'il y avait devant.

  9. #9
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Non tu avais dis ceci :
    Normal qu"il ne le trouve pas, mon fichier est dans localhost/planning_licence/

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    ptite erreur de frappe . Dans le reste des messages j'ai donné le bon chemin. Désolé pour cette confusion.

    Quoi qu'il en soit le chemin est bon mais il n'arrive pas a effacer le fichier

    Sinon tant pis, je vais opter pour quelque chose de beaucoup plus simple et que j'arrive a faire : vider complétement le dossier au lieu de permettre de choisir le fichiers à supprimer..

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Points : 71
    Points
    71
    Par défaut
    Voici la réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="deletm1.php/voir_fichiers.php?nom='.$Fichier.'">Supprimer</a>
    Il fallait renvoyer le lien vers la page qui contient le code pour effacer, et non vers le dossier qui contient le fichier a effacer

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

Discussions similaires

  1. [débutant][URL] problème de chemin
    Par soulhouf dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 14/09/2005, 16h25
  2. [MFC]Problème de chemin de fichier
    Par benahpets dans le forum MFC
    Réponses: 3
    Dernier message: 06/09/2005, 13h07
  3. [XSLT] Problème de chemin d'accès + XSLT
    Par Jorus dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/09/2004, 08h36
  4. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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