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 :

Soucis d'upload PHP


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Soucis d'upload PHP
    Bonjour débutante dans le web et après avoir fait plusieurs recherches je n'arrive pas à trouver le soucis. Je cherche à uploader mes images dans un répertoire puis ensuite sur ma bdd. Je souhaiterais que mes fichiers uploadés arrivent dans le dossiers assets/images/uploads

    Voici mon code :
    Ce fichier ce trouve dans dossier le backOffice/views/
    fichier cv.phtml où se trouve le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <section class="bo_form">
    <h1 class="h1 bo_title1">Ajouter votre nouveau cv</h1>
        <form action="addCv.php" method="POST" enctype="multipart/form-data" >
            <input class="bo_form_item" type="file" id="cvForm" name="cvForm" accept=".png, .jpg, .pdf, .jpeg ">
            <button class="bo_form_button" type="submit" class="bo_form_button"> valider </button>
            <p><strong>Note:</strong> Seuls les formats .pdf, .jpg, .jpeg .png sont autorisés </p>
        </form>
     
    </section>
    Ce fichier ce trouve dans le dossier backOffice/
    Voici le code du fichier addCv.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
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
    session_start();
    if(!isset($_SESSION['connected']) || $_SESSION['connected'] !== true )
    header('Location:login.php');
     
     
     
    //ces includes servent à la fonction connexion à la bdd
    include('../config/config.php');
    include('../lib/bdd.lib.php');
     
     
     
    $vue='cv.phtml';
    $errorForm = []; 
    $id=null;
    $lienCv = '';
    $title = 'ajout cv';
    $fichier = '';
     
    try{
        if (array_key_exists('cvForm',$_POST)){
     
            // je vais chercher mon formulaire
            $lienCv = trim($_POST['cvForm']);
     
            if($lienCv == ''){
     
                $errorForm[] = 'Votre lien ne peut être vide';
            }
     
            if(count($errorForm) == 0)
            {  
     
                // /* upload image ! */
                $nomFichier = basename($_FILES['cvForm']['name']);
                $cheminDossier = UPLOADS_DIR;
                $cheminFichier= $cheminDossier . $nomFichier;
                $extensionFichier = pathinfo($nomFichier,PATHINFO_EXTENSION); 
                $taille_maxi = 1000000;
                $taille = filesize($_FILES['cvForm']['tmp_name']);
                $extensionsAutorisees = array('png','jpg','jpeg','pdf');
                $fichier =  $_FILES['cvForm']['tmp_name'];
     
                //Vérifications de sécurité
                if(!in_array($extensionFichier,$extensionsAutorisees)){
                    $erreur = 'Vous devez uploader un fichier de type pdf, png, jpg, jpeg..';
                }
                if($taille>$taille_maxi){
                    $erreur = 'Le fichier est trop gros';
                }
                if(!isset($erreur)) {
                    if(move_uploaded_file($fichier, $cheminFichier)) {
     
                        $bdd= connexion();
                        $sth1= $bdd->prepare('INSERT INTO `cv`(lien_cv) VALUES (:lien_cv)');
                        $sth1->bindValue(':lien_cv',$nomFichier, PDO::PARAM_STR);
                        $sth1->execute();
     
                        //message dynamique
                        $_SESSION['SuccesFlash']= 'Le cv a bien été ajouté.';
                        header('Location:index.php');
                        exit();
     
                    }
                    else{
                        echo 'Echec de l\'upload !';
                    }
                }
                else{
                    echo $erreur;
                }
     
     
            }
        }
    }
    catch(PDOException $e){
        $vue= 'erreur.phtml';
        $errorForm[] = 'Une erreur s\'est produite : '.$e->getMessage();
     
    }
    include('views/layout.phtml');

    - J'ai fais des var_dump de $_FILES donc pas de soucis le fichier est bien pris en compte , je retrouve bien tout ce que je cherche.
    - Je me demande donc si je n'ai pas un problème avec l'url vers lequel je renvois mon fichier à uploader mais j'ai essayé pas mal de variante pour le chemin, sans aucun succès. un var_dump de UPLOADS_DIR = /var/www/petsitter/assets/images/uploads/ ce qui est l'url complète donc il me semble que c'était une bonne solution.
    - Je me demande donc si ce n'est pas un soucis de droits de création dans le dossier uploads ( j'ai donc essayé de modifier les permissions des fichiers en donnant l'autorisation de création et suppression des fichiers au groupe ou aux autres... mais ça ne reste pas une fois valider voir pièce jointe ).
    - Peut être que je suis complètement à coté de la plaque
    - mon problème s’arrête move_uploaded_file($fichier, $cheminFichier).

    -Je n'ai pas de message d'erreur qui m'aiderait grandement

    Voilà j'espère ne pas avoir été trop brouillon dans mon explication.
    Merci pour votre aide si ça peut me débloquer !
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Pfiouuu avec toutes ces variables "fichiers" pas forcément simple de s'y retrouver xD
    J'ai même cru, au début, que tu utilisait mal la fonction move_uploaded_file() mais il semblerait que c'est juste difficile à lire ^^

    Je pense donc qu'on est parti sur un problème de droits effectivement.
    Personnellement, je créé toujours le dossier qui reçoit les fichiers depuis PHP, ça évite les problèmes
    Je ne te conseillerai pas de supprimer ton dossier uploads/ mais plutôt de créer des sous-dossiers dans celui-ci.
    En effet, pour des raisons techniques, il est préférable de ne jamais dépasser les 2 000 fichiers dans un dossier, c'est d'ailleurs pour ça que Wordpress créée des sous-dossiers représentants le mois en cours pour y stocker les fichiers.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $upload_directory = UPLOADS_DIR . date('m');
    if(!file_exists($upload_directory)) {
        mkdir($upload_directory, 0755, true);
    }

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Merci
    Merci pour ta réponse,

    Désolé pour toute ces variables mais c'est vrai que j'arrive mieux à m'y retrouver pour ma part ... La noobitude je suppose.
    Je vais testé ce que tu m'as conseillé cet aprem !! Je referais un retour .

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Okay !

    Petit complément d'infos sur mon utilisation de mkdir() parce que j'ai oublié de le mentionner dans ma réponse
    • 755 est la valeur recommandée pour les dossiers (644 pour les fichiers)
    • le true à la fin permet de dire à PHP qu'il créé tous les dossiers jusqu'au chemin final. Ca permet aussi d'être sur que le dossier existe

  5. #5
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Enfin !!
    Alors voilà avec ta solution je créé bien mon dossier ! Mais ça ne marchait toujours pas et a force de fouiner... Je me suis rendue compte que je n'avais pas compris les arguments de move_uploaded_file() et que j'ai eu de la chance de voir un commentaire d'une personne comme moi. Je pensais que le 2eme argument qui est la destination était le nom de dossier où l'on voulait déplacer le fichier... En fait d'après ce que j'ai compris c'est le nom complet de la destination dossier+le nom du fichier ... En tout cas comme cela ça fonctionne ... grr j'ai plus de cheveux ! Merci pour ton aide qui me permet de faire quelque chose de propre.
    PS : j'ai bien allégé aussi mes variables ^^

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Dis-toi que mon premier message, je l'ai réécrit 3 fois à cause des noms de variables =D

    La première fois parce que je pensais effectivement à des problèmes de droits, puis j'ai relu une 2e fois le code et je me suis dit "tiens non, il y a une mauvaise utilisation".
    Du coup j'ai réécrit mon commentaire une seconde fois. A la fin de celui-ci, j'ai relu encore une fois le code et je me suis dit "Hmmm je ne vois plus l'erreur que je souligne dans mon commentaire" donc je suis reparti sur le commentaire concernant les droits xD

    Voilà pourquoi il est important de bien nommer ses variables, et de les nommer différemment

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

Discussions similaires

  1. [Upload] AFFICHAGE ERREUR upload.php
    Par cherifa dans le forum Langage
    Réponses: 1
    Dernier message: 17/09/2006, 15h29
  2. [Upload] php.ini et upload
    Par djedje37et28 dans le forum Langage
    Réponses: 8
    Dernier message: 03/08/2006, 20h54
  3. [Upload] Php : script d'Upload vers mon site : Big Probleme
    Par CyberTwister dans le forum Langage
    Réponses: 8
    Dernier message: 27/03/2006, 08h06
  4. [Upload] Upload fichier upload.php?fichier=c:\toto.sql
    Par enibris dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2006, 19h43
  5. [Upload] PHP 4 sous Windows => Upload
    Par size_one_1 dans le forum Langage
    Réponses: 11
    Dernier message: 24/12/2005, 14h30

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