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 :

upload fichier sur formulaire avec deux fiichiers dont un obligatoire


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut upload fichier sur formulaire avec deux fiichiers dont un obligatoire
    Bonjour

    Ci joint mon code: principe vérifie si deux fichiers sont joints au formulaire et envoi si ok autrement message erreur
    Ce type de fichier n'est pas autorisé ou fichier vide normalement le message devrait etre Le fichier est introuvable mais le principe marche
    Probleme envoi du formulaire avec seulement un fichier obligatoire (deuxieme fichier nommé id15 au lieu id14 optionnel) meme en supprimant
    le test de presence fichier $tmp_file = $_FILES['id_15']['tmp_name'] if (is_uploaded_file($tmp_file['tmp_name'])) j ai toujour le message
    "ce type de fichier n'est pas autorise ou vide" car il ne doit pas trouver l'extension
    Merci d'avance pour votre aide
    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
    $content_dir = 'upload/'; 
    $content_dir.=$chiffre."/";
    $envoi_mail_pj=1;
    IF (!file_exists("./upload")){
    umask(0);
    @mkdir("./upload",0777);
    }
    IF (!file_exists("./upload/$chiffre")){
    umask(0);
    @mkdir("./upload/$chiffre",0777);
    }$nb_fic=0;
    $url_chemin=str_replace("formulaire.php","","http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'] );
    $tmp_file = $_FILES['id_14']['tmp_name'];
    if (is_uploaded_file($tmp_file['tmp_name'])) {
     
    exit("Le fichier est introuvable");
    }
     
    if ( $_FILES['id_14']['size']>75000){
    exit("Le poids de votre fichier est trop important.");
    }
     
    // on vérifie maintenant l'extension
    $type_file1 = explode(".",$_FILES['id_14']['name']);
    $type_file=strtolower($type_file1[count($type_file1)-1]);
    IF (!strstr($type_file, 'doc')&&  !strstr($type_file, 'docx')&&  !strstr($type_file, 'pdf')){
    exit("Ce type de fichier n'est pas autorisé ou fichier vide.");
    }
     
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['id_14']['name'];
     
    if( @preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $name_file))
    {
    exit("Nom de fichier non valide");
    }
    else {
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
    exit("Impossible de copier le fichier dans $content_dir");
    }
    else {
      $url_upload.='fichier à télécharger sur le serveur : '.$url_chemin.$content_dir . $name_file.'<br>';
      $nb_fic++;
    $tab_fic[$nb_fic][0]=$content_dir . $name_file;
    $tab_fic[$nb_fic][1]=$_FILES['id_14']['type'];
    }	
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est un peu difficile de te comprendre car tu ne fais pas de phrases.

    Sinon commence par debuguer très simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!strstr($type_file, 'doc')&&  !strstr($type_file, 'docx')&&  !strstr($type_file, 'pdf')){
    exit("Le type de fichier " . $type_file . " n'est pas autorisé ou fichier vide.");
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Tu as écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tmp_file = $_FILES['id_14']['tmp_name'];
    if (is_uploaded_file($tmp_file['tmp_name'])) {
     
    exit("Le fichier est introuvable");
    }
    Tu dois faire ton test sur $tmp_file, et non sur $tmp_file['tmp_name'] (qui n'existe pas)
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut reponse upload fichier
    D'abord merci pour la réponse
    Si je modifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (is_uploaded_file($tmp_file)) {
    lorsque je joins un fichier cela ne marche plus message erreur "Le fichier est introuvable"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut explication
    Merci pour la réponse, concernant mon probleme
    Exemple J'ai un formulaire pour envoi de candidature, à joindre avec le formulaire un premier fichier exemple CV qui est obligatoire qui correspond au script ci dessus avec (id_14) qui marche.
    Je voudrais ajouter un deuxieme champ à ce formulaire pour joindre une lettre de motivation mais qui elle ne serait pas obligatoire à joindre
    Par rapport au script je le recopie et nomme id_15 la variable pour ce deuxième fichier mais je ne sais pas comment modifier mon debut de script id_15
    car il va détecter qu'il n'y a pas de fichier même en supprimant le code en gras cela ne marche pas
    .
    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
    $tmp_file = $_FILES['id_15']['tmp_name'];
    if (is_uploaded_file($tmp_file)) {
     
    exit("Le fichier est introuvable");
    }
     
    if ( $_FILES['id_15']['size']>75000){
    exit("Le poids de votre fichier est trop important.");
    }
     
    // on vérifie maintenant l'extension
    $type_file1 = explode(".",$_FILES['id_15']['name']);
    $type_file=strtolower($type_file1[count($type_file1)-1]);
    if (!strstr($type_file, 'doc')&&  !strstr($type_file, 'docx')&&  !strstr($type_file, 'pdf')){
    exit("Le type de fichier " . $type_file . " n'est pas autorisé ou fichier vide");
    }
     
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['id_15]['name'];

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as écris : "si le fichier a été uploadé, arrêter"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut upload deuxieme fichier
    Si je supprime le début du script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (is_uploaded_file($tmp_file)) {
     
    exit("Le fichier est introuvable");
    }
    j'ai un message erreur "impossible de copier dans upload et comme je n'y connais pas grand chose en 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
    $tmp_file = $_FILES['id_15']['tmp_name'];
     
     
    if ( $_FILES['id_15']['size']>75000){
    exit("Le poids de votre fichier est trop important.");
    }
     
    // on vérifie maintenant l'extension
    $type_file = explode(".",$_FILES['id_15']['name']);
    $type_file=strtolower($type_file1[count($type_file1)-1]);
    if (!strstr($type_file, 'doc')&&  !strstr($type_file, 'docx')&&  !strstr($type_file, 'pdf')){
    exit("Le type de fichier " . $type_file . " n'est pas autorisé");
    }
     
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['id_15']['name'];
     
    if( @preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $name_file))
    {
    exit("Nom de fichier non valide");
    }
    else {
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
    exit("Impossible de copier le fichier dans $content_dir");

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas vraiment une question de PHP mais plus de logique.
    Le premier fichier est obligatoire : s'il n'existe pas on ne fait rien
    Le premier fichier est facultatif : s'il existe on le traite.

    Ca serait dommage de ne pas faire une fonction d'ailleurs :
    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
    <?php
    $content_dir = 'upload/'; 
    $content_dir.=$chiffre."/";
     
    $url_chemin=str_replace("formulaire.php","","http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'] );
     
    upload_fichier('id_14', $url_chemin, $content_dir);
    upload_fichier('id_15', $url_chemin, $content_dir);
     
    function upload_fichier($name, $content_dir) {
    	if (isset($_FILES[$name] && $_FILES[$name]['error'] == 0) {
     
    		$allowed_type = array('doc','docx', 'pdf');
    		$type_file = strtolower(end(explode(".",$_FILES[$name]['name'])));
     
    		if ($_FILES[$name]['size']>75000) {
    			echo("Le poids de votre fichier est trop important.");
    		}
    		elseif(!in_array($type_file, $allowed_type) {
    			echo("Ce type de fichier n'est pas autorisé ou fichier vide.");
    		}
    		elseif (preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $_FILES[$name]['name'])) {
    			echo("Nom de fichier non valide");
    		}
    		elseif (!move_uploaded_file($tmp_file, $content_dir . $name_file)) {
    			echo("Impossible de copier le fichier dans $content_dir");
    		}
    		else {		
    			echo 'Fichier à télécharger sur le serveur : '.$url_chemin.$content_dir . $_FILES[$name]['name'].'<br>';
    		}
    	}
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut upload
    Tout d'abord,merci pour toutes ces reponses et de ton aide, alors la je nage,

    Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' on line 49
    ligne 49 if (isset($_FILES[$name] && $_FILES[$name]['error'] == 0) {
    il y a pas aussi un pb avec pj=1
    je remets mon code pour info

    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
    $page_web="[page_prec]";
    $page_web=str_replace("[SESSION_ID]","?".session_name()."=".session_id(),$page_web);
    $chiffre=rand(100,999).rand(100,999).rand(100,999);
    $content_dir = 'upload/'; 
    $content_dir.=$chiffre."/";
    $envoi_mail_pj=1;
    IF (!file_exists("./upload")){
    umask(0);
    @mkdir("./upload",0777);
    }
    IF (!file_exists("./upload/$chiffre")){
    umask(0);
    @mkdir("./upload/$chiffre",0777);
    }$nb_fic=0;
    $url_chemin=str_replace("formulaire.php","","http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'] );
     
    upload_fichier('id_14', $url_chemin, $content_dir);
    upload_fichier('id_15', $url_chemin, $content_dir);
     
    function upload_fichier($name, $content_dir) {
    	if (isset($_FILES[$name] && $_FILES[$name]['error'] == 0) {
     
    		$allowed_type = array('doc','docx', 'pdf');
    		$type_file = strtolower(end(explode(".",$_FILES[$name]['name'])));
     
    		if ($_FILES[$name]['size']>75000) {
    			echo("Le poids de votre fichier est trop important.");
    		}
    		elseif(!in_array($type_file, $allowed_type) {
    			echo("Ce type de fichier n'est pas autorisé ou fichier vide.");
    		}
    		elseif (preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $_FILES[$name]['name'])) {
    			echo("Nom de fichier non valide");
    		}
    		elseif (!move_uploaded_file($tmp_file, $content_dir . $name_file)) {
    			echo("Impossible de copier le fichier dans $content_dir");
    		}
    		else {		
    			echo 'Fichier à télécharger sur le serveur : '.$url_chemin.$content_dir . $_FILES[$name]['name'].'<br>';
    		}
    	}
    }
     
    $data.=$url_upload;
    include('class.phpmailer.php');
    if (@count($_SESSION["champs"] )>0) {
       foreach ($_SESSION["champs"] as $key => $value) {
         $data.=$value["libelle"]."=".$value["contenu"]."<br>";
       }
    }
    $data.=$msg_client_txt; 
    $mail = new PHPMailer();
    $mail->From     = "mail@...";
    $mail->FromName = "";
    $mail->Subject="..." ;
    $mail->AddAddress('mail@....', '');
     
    $mail->Body    = $data.$msg_html_prod;
    $mail->AltBody = $data.$msg_txt_prod;
          if ($nb_fic>0 && $envoi_mail_pj==1){ 
    $x=1;
     
    while ($x<=count($tab_fic)){
     
    //$m->attachFile($tab_fic[$x][0],$tab_fic[$x][1]);
    $mail->AddAttachment($tab_fic[$x][0], $tab_fic[$x][1]);
    $x++;
    }
    }
    $mail->send();
    session_destroy() ;
    header("location: http://www..../merci.html");
    exit();

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_FILES[$name]) && $_FILES[$name]['error'] == 0) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut message erreur
    C'est bien cette ligne qui me donne une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_FILES[$name] && $_FILES[$name]['error'] == 0) {
    Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')'

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je te l'ai corrigé dans le message précédent.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut erreur code
    Ok je n'avais pas remarqué la difference

    Avec 1 fichier ou deux fichiers ou pas de fichiers joints j'ai une autre erreur
    Parse error: syntax error, unexpected '{' in /homez.183/innovsit/www/maquette3/formulaire1.php on line
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(!in_array($type_file, $allowed_type) {

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les fautes de syntaxe, tu peux les corriger.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif(!in_array($type_file, $allowed_type)) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 6
    Points
    6
    Par défaut message erreur
    merci pour ton aide, je ne suis vraiment pas de niveau, ci dessous message erreur lorsque l'on joint un fichier

    Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 22 in on line 60
    Impossible de copier le fichier dans http://www.....fr/formulaire1.php
    line 60
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $_FILES[$name]['name'])) {
    Warning: Cannot modify header information - headers already sent by (output started at /homez..../.../www/maquette3/formulaire.php:60) in /homez..../..../www/formulaire.php on line 100
    line100 :header("location: http://www.....fr/merci.html");

    par contre si je ne joints pas de fichier mail part et reception dans la boite mail

Discussions similaires

  1. upload fichier sur formulaire
    Par clemant21 dans le forum Langage
    Réponses: 5
    Dernier message: 16/04/2014, 21h57
  2. [1.x] pb sur formulaire avec deux listes (sfWidgetFormDoctrineChoice)
    Par seveinfo dans le forum Symfony
    Réponses: 0
    Dernier message: 11/09/2011, 11h32
  3. suite "chargement fichier sur serveur avec upload"
    Par gasper06 dans le forum Flex
    Réponses: 4
    Dernier message: 25/06/2009, 13h17
  4. [Upload] Insérer un formulaire avec envoi de fichier.
    Par simplyme dans le forum Langage
    Réponses: 7
    Dernier message: 13/06/2007, 11h22
  5. [.NET 2.0] Probleme upload fichier sur ftp avec My
    Par Aspic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/03/2007, 09h10

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