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 :

Passer une variable dans une URL


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut Passer une variable dans une URL
    Bonjour,

    J'ai un ptit bout de code qui envoie des fichiers, puis affiche ces fichiers.
    Je voudrais ajouter un bouton supprimer à côté de chaque fichier.

    Voilà le lien que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="suppr.php?fic=".$nom."">Supprimer</a>

    Et la page suppr.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?
     
    $fichier_sup = $_GET["fic"]
    unlink('$fichier_sup');
     
    >
    Le lien s'affiche, mais quand je clique, j'ai une page blanche. Certainement ma variable $nom qui n'est pas transmise comme il faut ?
    Si vous pouviez m'aider pour la syntaxe dans la transmission de la variable svp.

    Merci d'avance ;-)

    ANDRE Ani
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,


    Dans votre code, les apostrophes (') autour de $fichier_sup sont en trop.

    Pour voir si $nom est bien passé, faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "'".$_GET["fic"]."'";
    Si la page suppr.php ne contient que le code mentionné, il est normal qu'elle soit blanche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $fichier_sup = $_GET['fic'];
    if (unlink($fichier_sup))
       echo 'Fichier "' . $fichier_sup . '" supprimé.';
    else
       echo 'Fichier "' . $fichier_sup . '" non supprimé.';
    ?>
    Christophe

    Pensez à mettre quand c'est le cas.

  3. #3
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Bon, la variable ne passe pas, je dois faire une erreur quelque part.

    Voilà le code qui affiche les fichiers dans un dossier :

    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
     
    <?php
     
    echo 'Fichiers dans le dossier uploads : ' . '<br /><br />';
     
    foreach (new DirectoryIterator('uploads/') as $fileInfo) {
     
    $nom = $fileInfo->getFilename();
    $chemin = $fileInfo->getPath();
    $fichierS = $fileInfo->getPath().'/'.$fileInfo->getFilename();
     
        if($fileInfo->isDot()) continue;
     
        $octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
        echo 'Nom : ' . $nom . ' Permission : ' . $octal_perms . ' Taille : '.$fileInfo->getSize() . ' <a href="suppr.php?fic=".$nom."">Supprimer</a>' . "<br>\n";
     
        }
    ?>
    Et la page suppr.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $fichier_sup = $_GET['fic'];
     
     
    echo "'".$_GET["fic"]."'";
     
    if (unlink($fichier_sup))
       echo 'Fichier "' . $fichier_sup . '" supprimé.';
    else
       echo 'Fichier "' . $fichier_sup . '" non supprimé.';
    ?>
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Essayez ça (il y avait des erreurs au niveau des ' et ") :
    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
    <?php
     
    echo 'Fichiers dans le dossier uploads : ' . '<br /><br />';
     
    foreach (new DirectoryIterator('uploads/') as $fileInfo) {
     
    	$nom = $fileInfo->getFilename();
    	$chemin = $fileInfo->getPath();
    	$fichierS = $fileInfo->getPath().'/'.$fileInfo->getFilename();
     
        if($fileInfo->isDot()) continue;
     
        $octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
        echo 'Nom : ' . $nom . ' Permission : ' . $octal_perms . ' Taille : '.$fileInfo->getSize() . ' <a href="suppr.php?fic='.$nom.'">Supprimer</a>' . "<br>\n";
     
    }
    ?>
    Christophe

    Pensez à mettre quand c'est le cas.

  5. #5
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Merci, il y a du mieux, la page suppr.php reçoit bien la variable.
    Mais j'ai le message fichier non supprimé.
    Et ce n'est pas un problème de droit, j'ai vérifié.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut file_exists
    Salut,

    Avant d'effacer le fichier, peux-tu vérifier qu'il existe ?
    Est-il dans le Document Root ?

    A+

  7. #7
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Heu... C'est quoi le Document Root ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut Racine
    C'est la racine de ton site web. Il faut vérifier que le fichier est bien là.

  9. #9
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Ok. C'est bon, ça fonctionne et je test si le fichier existe avant d'essayer de le supprimer.
    Dernier petit détail.
    J'ai un formulaire d'upload de fichier sur la page ou je les affiche avec le lien pour les supprimer.
    Lorsque j'en supprime un, j'ai un message d'erreur venant du formulaire d’envoi (car le formulaire ne contient aucun fichier et j'ai mauvais type de fichier. Une idée sur comment gérer cela svp ?

    Voilà le code du formulaire et de l'affichage :


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
     
    $dossier = 'uploads/';
    $fichier = basename($_FILES['monfichier']['name']);
    $taille_maxi = 400000;
    $taille = filesize($_FILES['monfichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.pdf', '.txt');
    $extension = strrchr($_FILES['monfichier']['name'], '.'); 
     
    if(!in_array($extension, $extensions)) 
    {
         $erreur = 'Mauvais type de fichier';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Fichier trop gros';
    }
    if(!isset($erreur))
    {
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['monfichier']['tmp_name'], $dossier . $fichier))
         {
              echo 'Fichier ' . $fichier . ' envoyé avec succès';
         }
         else
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
     
     
    ?>
     
     
     
     
     
    <form action="" method="post" enctype="multipart/form-data">
    <p>Formulaire d envoie de fichier<br />
    <input type = "file" name = "monfichier" /> <br />
    <input type = "submit" value = "Envoyer" />
    </p>
    </form>
     
    <?php
     
    echo 'Fichiers dans le dossier uploads : ' . '<br /><br />';
     
    foreach (new DirectoryIterator('uploads/') as $fileInfo) {
     
    	$nom = $fileInfo->getFilename();
    	$chemin = $fileInfo->getPath();
    	$fichierS = $fileInfo->getPath().'/'.$fileInfo->getFilename();
     
        if($fileInfo->isDot()) continue;
     
        $octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
        echo 'Nom : ' . $nom . ' Permission : ' . $octal_perms . ' Taille : '.$fileInfo->getSize() . ' <a href="suppr.php?fic='.$nom.'"><img src="delete.jpg"></a>' . "<br>\n";
     
    }
    ?>
    Et la page suppr.php :

    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
     
    <?php
     
    // suppression de fichiers dans uploads
     
    $filename = $_GET['fic'];
     
    $adresse = "uploads/";
    $chemin=''.$adresse.$_GET['fic'].'';
     
     
    if (file_exists($chemin)) {
        unlink($chemin);
    } else {
        echo "Le fichier $filename n'existe pas";
    }
     
     
    header('Location: form_envoie.php');
     
    ?>
    Merci d'avance ;-)
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  10. #10
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Il faudrait peut être géré le cas ou le formulaire est vide ?
    Comment faire si j'ai plusieurs formulaires sur une page, et que je n'en ai qu'un seul de rempli ?

    Du JQuery pour n'actualiser qu'un seul formulaire à la fois ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    ce qui est le plus perturbant dans ton script, c'est que tu permet sans vérification la suppression d'un fichier, directement en GET...

    Même si c'est local à toi, tu pourrais ajouter une confirmation, ou quelque chose qui permette à ton script de controller que cette requête GET à le droit de supprimer quelque chose.

    Mais même ca... le GET... c'est pas fait pour faire des suppressions...


    perso, ca me fait un peu peur ce genre de script
    Conception / Dev

  12. #12
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Je débute en PHP, alors, je fais comme je peux pour le moment... Si tu as d'autres solutions, des suggestions d'amélioration, je suis preneur.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    clairement, une requête GET pour une action de suppression devrait être rejeté par ton system

    tu devrais regarder REST => https://en.wikipedia.org/wiki/Repres...state_transfer

    c'est une normalisation , il en existe d'autres... mais en ce qui concerne la suppression, je pense que ca fait des années que tout le monde est OK la dessus, c'est interdit avec un GET
    Conception / Dev

  14. #14
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Ok, je vais regarder ça, merci.
    Sur le net, les exemples que j'ai vu fonctionnaient comme ça. Je fais avec ce que j'ai.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

Discussions similaires

  1. passer la valeur d'une variable dans un URL
    Par hishwest dans le forum ASP.NET
    Réponses: 0
    Dernier message: 10/01/2012, 00h18
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  4. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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