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 :

Deplacer deux fichiers dans un dossier créé [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Par défaut Deplacer deux fichiers dans un dossier créé
    bjr je développe un formulaire dont les client vont déposer leurs cv et lettre motivation au extension doc, pdf, txt pour le chemin j'ai fais maintenant je veux organiser je veux creer pour chaque utilisateur son propre dossier qui comporte sans email
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dossier = mkdir ("upload/$mail/", 0700);
    voila la parti du 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
    <?php
    if(isset($_POST['submit'])){
    $prenom=stripslashes($_POST['prenom']); //prenom
    $mail=stripslashes($_POST['mail']); //mail
     
    $dossier = mkdir ("upload/$mail/", 0700);
     
    $fichier = basename($_FILES['cv']['name']);
    $fichier1 = basename($_FILES['lm']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['cv']['tmp_name']);
    $taille1 = filesize($_FILES['lm']['tmp_name']);
    $extensions = array('.doc', '.docx', '.pdf');
     
    $extension = strrchr($_FILES['cv']['name'], '.');
    $extension1 = strrchr($_FILES['lm']['name'], '.');
    *
    *
    *
    if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier) && move_uploaded_file($_FILES['lm']['tmp_name'], $dossier . $fichier1)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
    echo 'Upload effectué avec succès !';
    }
    }
    le probleme c'est qu'il me crée un dossier contient email mais il est vide
    svp pouvez vous m'aidez sur ca

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Le code est incomplet mais il y a visiblement une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dossier = mkdir ("upload/$mail/", 0700);
    $dossier sera un booléen indiquant si la création du répertoire a échoué ou non. Ce n'est pas le chemin du dossier créé qui est retourné. Vous ne pouvez (devriez) donc pas l'exploiter ensuite ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier) && move_uploaded_file($_FILES['lm']['tmp_name'], $dossier . $fichier1))
    Il faut remplacer $dossier dans les move_uploaded_file par "upload/$mail/" (ou bien utiliser une variable intermédiaire chargée de recueillir cette valeur).

    Ce qui ferait qu'en l'état il doit chercher à les déplacer dans le répertoire courant (ce qui peut échouer si Apache/PHP n'a pas les droits d'écriture sur ce dernier).

    Il faudrait aussi savoir précisément quelles parties fonctionnent ou pas et récupérer dans la mesure du possible les erreurs.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Par défaut
    Citation Envoyé par julp Voir le message
    Le code est incomplet mais il y a visiblement une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dossier = mkdir ("upload/$mail/", 0700);
    $dossier sera un booléen indiquant si la création du répertoire a échoué ou non. Ce n'est pas le chemin du dossier créé qui est retourné. Vous ne pouvez (devriez) donc pas l'exploiter ensuite ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier) && move_uploaded_file($_FILES['lm']['tmp_name'], $dossier . $fichier1))
    Il faut remplacer $dossier dans les move_uploaded_file par "upload/$mail/" (ou bien utiliser une variable intermédiaire chargée de recueillir cette valeur).

    Ce qui ferait qu'en l'état il doit chercher à les déplacer dans le répertoire courant (ce qui peut échouer si Apache/PHP n'a pas les droits d'écriture sur ce dernier).

    Il faudrait aussi savoir précisément quelles parties fonctionnent ou pas et récupérer dans la mesure du possible les erreurs.
    wi ta raison mais j'ai remarquer que que mon script peut creer un dossier qui porte le nom d'email deposeur du cv mais il deplace pas mes fichiers sur ce dossiers ainsi si j'enleve mkdir en faisant ca marche bien c'est juste question organisation
    je veux dans ce repertoire upload creer des dossiers dynamiques
    voila mon code complet

    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
    85
     
    <meta http-equiv="Content-Type" content="text-html; charset=iso-8859-1">
    <?php
    if(isset($_POST['submit'])){
    $nom=stripslashes($_POST['nom']); //Nom
    $prenom=stripslashes($_POST['prenom']); //prenom
    $mail=stripslashes($_POST['mail']); //mail
    $fonction=stripslashes($_POST['fonction']); //fonction 
     $secteur=stripslashes($_POST['secteur']); //secteur 
     $date=date('Y/m/d');
     
    /**********CV****/
     
    $dossier = mkdir ("upload/$mail/", 0700);
     
    $fichier = basename($_FILES['cv']['name']);
    $fichier1 = basename($_FILES['lm']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['cv']['tmp_name']);
    $taille1 = filesize($_FILES['lm']['tmp_name']);
    $extensions = array('.doc', '.docx', '.pdf');
     
    $extension = strrchr($_FILES['cv']['name'], '.');
    $extension1 = strrchr($_FILES['lm']['name'], '.');
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions) && !in_array($extension1, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'veuillez upload tyep txt pdf doc';
    }
    if($taille>$taille_maxi && $taille1>$taille_maxi)
    {
          $erreur = 'taille fichier 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');
    		  $fichier1 = strtr($fichier1, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    	 $fichier1 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier1);
         if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier) && move_uploaded_file($_FILES['lm']['tmp_name'], $dossier . $fichier1)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
     
              echo 'Upload effectué avec succès !';
     
     
     
    		   print($nom.'<br>');
     print($prenom.'<br>');
     print($mail.'<br>');
     print($fonction.'<br>');
     print($secteur.'<br>');
     
     print($fichier.'<br>');
      print($fichier1.'<br>');
      print($date.'<br>');
     
     
    include 'connexion.php';
    		   $sql="insert into depot_cv values('', '$nom', '$prenom', '$mail', '$fonction', '$secteur','$fichier', '$fichier1', '$date' )";
    mysql_query($sql) or die("erreur l'ajout des donnees". mysql_error());
    echo 'ajout donnee avec sucee';
     
     
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo include 'echec1.php';
         }
    }
    else
    {
         echo $erreur;
    }
     
     
     
    }
     
    ?>
    es ce que c'est possible de creer des dossiers leure nom seront l'email de mes poseurs cvs ainsi les remplires avec les cv et lettre motivation ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Ca fonctionne très bien après avoir corrigé ce que j'ai indiqué (ça n'a pas été fait dans le code que vous redonnez).

    Apparemment vous cachez les erreurs, mais il faut s'assurer qu'Apache puisse créer les répertoires et fichiers demandés.

    Je pense aussi au mkdir qui foire si un fichier existe déjà avec le même nom. Il serait plus prudent de le corriger, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dossier = "upload/$mail/";
    if (file_exists($dossier)) {
        if (!is_dir($dossier)) {
            die("'$mail' existe déjà et n'est pas un répertoire.");
        }
    } else {
        if (!mkdir($dossier)) {
            die("Création du sous-répertoire '$mail' a échoué.");
        }
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Par défaut
    Citation Envoyé par julp Voir le message
    Ca fonctionne très bien après avoir corrigé ce que j'ai indiqué (ça n'a pas été fait dans le code que vous redonnez).

    Apparemment vous cachez les erreurs, mais il faut s'assurer qu'Apache puisse créer les répertoires et fichiers demandés.

    Je pense aussi au mkdir qui foire si un fichier existe déjà avec le même nom. Il serait plus prudent de le corriger, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dossier = "upload/$mail/";
    if (file_exists($dossier)) {
        if (!is_dir($dossier)) {
            die("'$mail' existe déjà et n'est pas un répertoire.");
        }
    } else {
        if (!mkdir($dossier)) {
            die("Création du sous-répertoire '$mail' a échoué.");
        }
    }
    ca marche je vois maintenant les fichiers dans le dossier mais quand je fais une autre saisie et j'introduit un email qui existe deja il déplace les fichiers dans le repertoire qui existe deja il dois affiché un msg '
    email existe déjà et n'est pas un répertoire
    il prend pas en consideration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (file_exists($dossier)) {
        if (!is_dir($dossier)) {
            die("'$mail' existe déjà et n'est pas un répertoire.");
        }
    } else {
        if (!mkdir($dossier)) {
            die("Création du sous-répertoire '$mail' a échoué.");
        }
    }
    normalement le test dois marché
    voila le code modifier

    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <meta http-equiv="Content-Type" content="text-html; charset=iso-8859-1">
    <?php
    if(isset($_POST['submit'])){
    $nom=stripslashes($_POST['nom']); //Nom
    $prenom=stripslashes($_POST['prenom']); //prenom
    $mail=stripslashes($_POST['mail']); //mail
    $fonction=stripslashes($_POST['fonction']); //fonction 
     $secteur=stripslashes($_POST['secteur']); //secteur 
     $date=date('Y/m/d');
     
    /**********CV****/
     
    $dossier = "upload/$mail/";
    if (file_exists($dossier)) {
        if (!is_dir($dossier)) {
            die("'$mail' existe déjà et n'est pas un répertoire.");
        }
    } else {
        if (!mkdir($dossier)) {
            die("Création du sous-répertoire '$mail' a échoué.");
        }
    }
     
    $fichier = basename($_FILES['cv']['name']);
    $fichier1 = basename($_FILES['lm']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['cv']['tmp_name']);
    $taille1 = filesize($_FILES['lm']['tmp_name']);
    $extensions = array('.doc', '.docx', '.pdf');
     
    $extension = strrchr($_FILES['cv']['name'], '.');
    $extension1 = strrchr($_FILES['lm']['name'], '.');
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions) && !in_array($extension1, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'veuillez upload tyep txt pdf doc';
    }
    if($taille>$taille_maxi && $taille1>$taille_maxi)
    {
          $erreur = 'taille fichier 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');
    		  $fichier1 = strtr($fichier1, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    	 $fichier1 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier1);
         if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier) && move_uploaded_file($_FILES['lm']['tmp_name'], $dossier . $fichier1)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
     
              echo 'Upload effectué avec succès !';
     
     
     
    		   print($nom.'<br>');
     print($prenom.'<br>');
     print($mail.'<br>');
     print($fonction.'<br>');
     print($secteur.'<br>');
     
     print($fichier.'<br>');
      print($fichier1.'<br>');
      print($date.'<br>');
     
     
    include 'connexion.php';
    		   $sql="insert into depot_cv values('', '$nom', '$prenom', '$mail', '$fonction', '$secteur','$fichier', '$fichier1', '$date' )";
    mysql_query($sql) or die("erreur l'ajout des donnees". mysql_error());
    echo 'ajout donnee avec sucee';
     
     
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo include 'echec1.php';
         }
    }
    else
    {
         echo $erreur;
    }
     
     
     
    }
     
    ?>

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Ce n'était pas le but de ce code que de s'assurer qu'il n'y ait pas écrasement des précédents documents (bien qu'on s'éloigne un peu du sujet, à faire avant le move_uploaded_file) ni que l'adresse mail a déjà été utilisée.

    Son but était de vérifier que le fichier $mail n'existe pas déjà (et que c'est bien un répertoire) sinon de tenter de le créer. mkdir générant une erreur dans ces cas de figure. Sinon, il suffit d'adapter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (file_exists($dossier)) {
        if (!is_dir($dossier)) {
            die("'$mail' existe déjà et n'est pas un répertoire.");
        } else {
            die("Adresse '$mail' déjà utilisée.");
        }
    } else {
        if (!mkdir($dossier)) {
            die("Création du sous-répertoire '$mail' a échoué.");
        }
    }
    Mais vous limitez vos utilisateurs de la sorte, je suppose, pour de potentielles mises à jour. Notez que vous pourriez aussi faire ce test via votre base de données.

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

Discussions similaires

  1. [VBA-E]Compter nombre de fichier dans un dossier
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2006, 14h36
  2. [Upload] upload de fichier dans un dossier creer en ligne
    Par jeanfrancois dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2006, 14h09
  3. Réponses: 7
    Dernier message: 05/01/2006, 01h06
  4. Pb de comptage de fichiers dans un dossier
    Par oz80 dans le forum Access
    Réponses: 2
    Dernier message: 15/11/2005, 14h26
  5. enregistrer deux fichier dans un seul fichier
    Par Bourak dans le forum Langage
    Réponses: 9
    Dernier message: 05/11/2005, 09h48

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