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 avec lien unlink


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut Problème avec lien unlink
    Bonjour, je voudrais savoir si c'était possible de faire un :
    <a href=unlink....>Supprimer</a>
    Car je viens d'essayer mais ca me renvoie sur une page 404 not found alors que le unlink seul marche..

    Merci de votre aide

    Cordialement

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    href est un attribut d'un lien (une page sur le serveur) donc quand tu cliques le lien, il va chercher la page qui est dans l'attribut href sur le serveur, si la page n'existe pas --> erreur 404.

    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Merci de votre aide, mais auriez-vous par hasard une idée d'incorporation d'un unlink dans un hyperlien? Je m'explique. Je souhaiterais que sur la page il y a écrit : "Cliquez ici pour supprimer le fichier" et lorsque l'utilisateur clique sur cette phrase qui sera en hyperlien, le fichier se supprimer du dossier (ici /upload)

    Cordialement

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut Créer une page supprimer.php
    Une idée parmi tant d'autres :
    dans le href tu cibles une page supprimer.php à laquelle tu transmet (en $_POST ou $_GET) l'identifiant de la page à supprimer,
    tu y fais le traitement de la suppression via unlink()
    puis tu rediriges vers la page qui affiche lien en transmettant via $_GET l'état de la suppression.

    Une autre solution est de lancer une fonction js on clic sur le lien qui effectue une requête ajax sur la page supprimer.php.

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    je ne trouve pas de lien dans la FAQ mais il faut commencer par comprendre le mécanisme de PHP.
    - Tes scripts PHP sont interprétés sur le serveur qui renvoie une "page internet" au navigateur
    - Le navigateur n'interprète pas le PHP donc tu ne peux pas utiliser une fonction PHP comme ça. Il reçoit et interprète du HMTL, JS, CSS, etc.
    - La seule manière est donc de dire au serveur d'exécuter telle ou telle fonction PHP (en passant des paramètres à ton lien ou en appelant telle ou telle page PHP)

    Je ne sais pas si c'est beaucoup plus clair...

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Pour le moment j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $fichier = uniqId().$extension;
    $url = 'http://localhost/Projet/upload/'.$fichier;
    echo '<a href="efface.php?supprimeLeFichier='.($url).'">supprimer</a><br />';
    *
    Et j'ai créé une page efface.php avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <html>
    	<head>
    		<title>efface</title>
    	</head>
    <body>
    <?php
    if (isset($_GET["supprimeLeFichier"])) {
    $up = $_GET['url']
      unlink($up);
      }
    ?>
    </body>
    </html>
    Et il me dise erreur : Parse error: syntax error, unexpected T_STRING in C:\wamp\www\Projet\efface.php on line 9

    Si vous pouvez m'aider.. Merci beaucoup

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Tu as oublié un point-virgule :

    Et attention ce code a un gros trou de sécurité, il permet d'effacer n'importe quel fichier sur ton serveur en remplacement le paramètre directement dans l'url.
    Je te conseille de ne passer que le nom du fichier dans l'url et de définir en dur le répertoire dans ta page efface.php.
    Sachant que l'on pourra quand même effacer n'importe quel fichier dans ce répertoire ce qui n'est pas sécurisé, tout dépend de tes besoins.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    Ici tu dois avoir un chemin relatif mais pas un url absolue
    $url = 'http://localhost/Projet/upload/'.$fichier;
    A+.

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Je vous remercie de votre aide c'est sympa. Et pour le chemin relatif si je mets
    $url='/upload/'.$fichier; cela est bon alors ? vu que la page efface.php se trouve dans le même dossier que ma page index..

    Merci

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Désolé mais ça ne marche pas. Mon code est le suivant :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    if (isset($_POST["supprimeLeFichier"])) {
    	$up = $_POST['url'];
      unlink($up);
      }
    ?>
    Je viens de changer le GET en POST car j'utilise la méthode POST mais lorsque je clique maintenant sur l'hyperlien 'supprimer' une page blanche apparait et le fichier n'est toujours pas supprimer..

    Merci de votre aide

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = uniqId().$extension;
    echo '<a href="efface.php?supprimeLeFichier='.$fichier.'">supprimer</a><br />';
    Une variable passé en URL est GET mais pas POST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if (isset($_GET["supprimeLeFichier"])) {
    	$up = $_GET['supprimeLeFichier'];
      unlink("./cheminRepertoire/".$up);
      }
    ?>
    A+.

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Je viens d'essayer, en changeant le dossier de destination et cela ne marche pas.. Je remet mes variables :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $fichier = uniqId().$extension;
    $url = 'http://localhost/Projet/upload/'.$fichier;
    Je m'explique, j'ai 3 pages : une page formulaire qui renvoie vers une page upload et j'ai mis un <a href..> sur la page upload qui renvoie vers efface.php. Mais les deux variables ci-dessus se situe dans le fichier upload.php, donc faut-il pas un $_SESSION pour récupérer une variable provenant d'une autre page?
    Merci

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    La variable (nom de fichier) est passé en URL, ce que récupères avec $_GET, je ne sais pas si tu comprends ce que c'est ces variables POST et GET. Je te conseille de lire un tutoriel sur PHP.

    J'ai l'impression que ça tourne en rond là

  14. #14
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Je viens de lire des cours sur la méthode POST et GET j'ai compris leur fonctionnement merci.
    Mon code est :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    if (isset($_GET["supprimeLeFichier"])) {
    	$up = $_GET['supprimeLeFichier'];
      unlink("./upload/".$up);
      echo "Le fichier a été supprimé avec succès";
      }else{
      echo "Erreur lors de la suppression du fichier ";
      }
    ?>
    et je reçois une erreur :
    Warning: unlink(./upload/) [function.unlink]: Permission denied in C:\wamp\www\Projet\efface.php on line 9

    Donc je pense qu'il faut faire un chmod('0777',$fichier) mais je bloque sur $fichier car $fichier = "./upload/".$up chez moi..

  15. #15
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    T'as peut-être effectivement un problème de droit mais je crois que ton nom de fichier n'est pas passé également car il n'apparaît pas dans l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: unlink(./upload/)
    T'es sûr que $up n'est pas vide ?

    Pour les droits c'est un problème récurrent selon les config du serveur. Ton fichier dans upload est créé comment ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    On m'a aidé à modifier le fichier efface.php :
    Code php : 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
    <html>
    	<head>
    		<title>efface</title>
    	</head>
    <body>
    <?php
    chmod("upload", 0755);
    if (isset($_GET["supprimeLeFichier"])) {
    	$up = $_GET['supprimeLeFichier']; 
      unlink("Projet/upload/".$up);
      echo "Le fichier a été supprimé avec succès";
      }else{
      echo "Erreur lors de la suppression du fichier ";
      }
    ?>
    </body>
    </html>
    Mais j'ai toujours un problème alors que le message 'Le fichier a été supprimé avec succès s'affiche, je ne comprend plus
    Warning: unlink(localhost/Projet/upload/4ddf5f57ab12f.jpg) [function.unlink]: No such file or directory in C:\wamp\www\Projet\efface.php on line 10
    Merci

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

Discussions similaires

  1. Problème avec lien ODBC dans Access
    Par Claude Poulin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/03/2009, 20h40
  2. [SQL] probléme avec lien xid.php?donnees=$donnees&reponse=$reponse
    Par mecmec dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 05/06/2007, 19h11
  3. [XLink] Problème avec liens étendus et image
    Par Bardack dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/12/2006, 15h09
  4. problème avec lien en flash
    Par ph_anrys dans le forum Flash
    Réponses: 14
    Dernier message: 21/12/2006, 16h57

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