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

PHP & Base de données Discussion :

Variable dans un chemin de direction


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut Variable dans un chemin de direction
    Bonjour, j'ai de nouveau un problème d’écriture, après avoir regardé les tutos etc .... je n'arrive pas à gérer bien mon code

    j'ai une page type formulaire pour uploader des fichiers dont voici la fin du code

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <form method="POST" action="uploadvalidation.php" enctype="multipart/form-data">
         <div align="center">
         <!-- On limite le fichier à 1000Ko -->
         <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
         Fichier : 
         <input type="file" name="avatar"> 
         <br /><br />
         <input type="submit" name="envoyer" value="Envoyer le fichier">
         </div>
    </form>
    <label>
    <input type="text" name="nomagent" id="nomagent" value="<?php echo $dossier; ?>" />
    </label>
    </body>
    </html>

    cela m'envoi vers ma page de traitement "uploadvalidation.php"

    dont voici le code

    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
    <?php
    $nomagent = $_GET['nomagent'];
    $dossier = 'coffre/'.$nomagent.'/';  
    $fichier = basename($_FILES['avatar']['name']);
    $taille_maxi = 1000000;
    $taille = filesize($_FILES['avatar']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.doc', '.pdf');
    $extension = strrchr($_FILES['avatar']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
    ?>
    le code fonctionne cela upload bien le fichier mais il me le met dans "coffre"

    hors, j'aimerai qu'il me le mette dans coffre/nomagent

    (nomagent étant un sous dossier dans coffre)

    Avant de vous écrire comme a l'accoutumé, j'essaie de trouver je me débats mais la je bloque

    Pouvez-vous m'aider

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 67
    Points : 72
    Points
    72
    Par défaut
    Salut,

    Il faut que tu débugues ton code étape par étape, commence par vérifier si tu récupères bien quelque chose par ta variable $_GET['nomagent']...

    Ton champ de formulaire <input type="text" name="nomagent" id="nomagent" value="<?php echo $dossier; ?>" /> que tu tentes de récupérer, se trouve HORS des balises FORM... donc normal que tu ne récupère pas la valeur.
    Et l'autre soucis, c'est que tu tentes de le récupérer en GET au lieu de POST sur ton traitement de formulaire (uploadvalidation.php).

    Ou alors, l'autre solution si tu veux vraiment récup en GET et pas en POST, tu n'as qu'une chose à modifier pour que ça marche, modifie l'attribut action de ton formulaire :
    <form method="POST" action="uploadvalidation.php?nomagent=<?= $dossier; ?>" enctype="multipart/form-data">

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    Merci PhiMau

    J'ai suivi tes conseils et ca à l'air de fonctionner.

    Par contre une question, je sais pas si c'est faisable mais dans le code quelque soit le nom du fichier a uploader, est-il possible de chager le nom pour qu'il ait un nom bien précis?


    Encore Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 67
    Points : 72
    Points
    72
    Par défaut
    Oui tu peux, par contre je t'invite quand même à bien te documenter sur les fonctions que tu utilises et a comprendre ce que tu mets dans ton code.

    Ça t'aidera beaucoup et justement tu ne resteras pas bloqué si tu sais précisemment quelle ligne de code fait quoi...
    (je dis ça parce que c'est tentant de copier-coller des bouts code trouvés sur internet mais ça devient vite bord*lique).

    Bref tu peux le faire au niveau de ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    Comme indiqué dans la DOC (https://www.php.net/manual/fr/functi...oaded-file.php) :
    move_uploaded_file ( string $filename , string $destination ) : bool
    S'assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu'à destination.
    Toi tu définis le nom du fichier ici en récupérant le nom d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = basename($_FILES['avatar']['name']);
    Mais tu pourrais très bien faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = "nom_personnalisé." . $extension
    (mais pour que ça fonctionne tu dois le déplacer après la ligne ou tu récupères l'extension).

    Bon courage !

Discussions similaires

  1. Variable dans un chemin et pagination
    Par lou87 dans le forum Langage
    Réponses: 5
    Dernier message: 19/06/2008, 14h29
  2. [Upload] Variable dans le chemin pas prise en compte
    Par deltus7529 dans le forum Langage
    Réponses: 8
    Dernier message: 17/03/2008, 20h46
  3. [Upload] Variable dans le chemin pas prise en compte
    Par bermanarber dans le forum Langage
    Réponses: 19
    Dernier message: 12/12/2007, 23h28
  4. Variable dans un chemin
    Par Strix dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2007, 10h35
  5. Réponses: 1
    Dernier message: 19/05/2006, 19h57

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