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 de fichier en php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 110
    Points : 55
    Points
    55
    Par défaut Upload de fichier en php
    Bonjour,

    Voila j'essaie de comprendre l'upload de fichier en php mais j'ai beau lire pas mal de tuto impossible de la mettre en oeuvre , pourtant j'ai utilisé un upload trés basique ...

    index.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
    <body>
     
    <form action="auth.php" method="post" enctype="multipart/form-data">
    Pseudo <input type="text" name="pseudo"><br />
    Password <input type="password" name="pass"><br />
    Chanson <input type="file" name="chanson"><br />
    <input type="submit" value="valider"></ br>
    </form>
     
    </body>
    </html>
    auth.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
    <?php
    if ( isset($_FILES['chanson']) && isset($_FILES['pseudo']) && isset($_FILES['pass']) )
    {
     
    		$dossier = '/test/';
    		$fichier = basename($_FILES['chanson']['name']);
    		if(move_uploaded_file($_FILES['chanson']['tmp_name'], $dossier . $fichier)) 
        		{
     
     
    			$serveur="sql.free.fr";
    			$user="xxxxxxx";
    			$passw="xxxxxx";
     
    			mysql_connect($serveur,$user,$passw);
    			mysql_select_db($user);
     
    			$pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));	
    			$pass=htmlentities(mysql_real_escape_string($_POST['pass']));
    			$chanson=htmlentities(mysql_real_escape_string($_POST['chanson']));	
     
    			mysql_query("INSERT INTO membre (pseudo,pass,email) VALUES ('$pseudo','$pass')");
    			mysql_query("INSERT INTO chanson_membre (chanson) VALUES ('$chanson')");	
    			mysql_close();
    		}
     
    }
    ?>
    Voila impossible de trouver l'erreur ...

    Merci à vous

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier = '/test/';
    T'as vraiment un dossier test à la racine de ton serveur ?
    Et si tu remplaçait par ./test ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 110
    Points : 55
    Points
    55
    Par défaut
    J'ai essayé mais en réalité il y a un probléme qui se pose :

    Le fait que je mette dans le form enctype="multipart/form-data" m'empeche d'enregistrer dans ma BDD les informations donc le seul moyen c'est de l'enlever mais si je l'enléve je ne peux plus uploader ...

    Comment faire ?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Le fait que je mette dans le form enctype="multipart/form-data" m'empeche d'enregistrer dans ma BDD


    Tiens pendant que j'y pense $_POST['chanson'] ce serait pas $_FILES['chanson']['name'] plutôt ?

  5. #5
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Le pseudo et le mot de passe sont placés dans le tableaux $_POST.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( isset($_FILES['chanson']) && isset($_POST['pseudo']) && isset($_POST['pass']) )
    Citation Envoyé par Benjamin Delespierre
    $_POST['chanson'] ce serait pas $_FILES['chanson']['name'] plutôt ?
    Oui bien vu. Ce qui donne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chanson=htmlentities(mysql_real_escape_string($fichier));
    au lieu de...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chanson=htmlentities(mysql_real_escape_string($_POST['chanson']));

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 110
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Voila j'ai modifié mes erreurs mais je retrouve néanmoins toujours le même problème :

    • Aucun enregistrement dans la BDD
    • Aucun fichier uploadé


    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
    <html>
     
    <body>
     
    <form action="auth.php" method="post" enctype="multipart/form-data">
     
    Pseudo <input type="text" name="pseudo"><br />
    Password <input type="password" name="pass"><br />
    email<input type="text" name="email"><br />
    fiche <input type="file" name="fiche1"><br />
    <input type="submit" value="valider"></ br>
    </form>
     
    </body>
    </html>

    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
    <?php
    if ( isset($_FILE['fiche1']) && isset($_POST['pseudo']) && isset($_POST['pass']) &&  isset($_POST['email']))
    {
     
     	$dossier = './test13/';
    	$fichier = basename($_FILES['fiche1']['name']);
    	move_uploaded_file($_FILES['fiche1']['tmp_name'], $dossier . $fichier);
     
    	$serveur="sql.free.fr";
    	$user="xxxxxxx";
    	$passwd="xxxxxxxxxx";
     
    	mysql_connect($serveur,$user,$passwd);
    	mysql_select_db($user);
     
    	$pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));
    	$email=htmlentities(mysql_real_escape_string($_POST['email']));	
    	$pass=htmlentities(mysql_real_escape_string($_POST['pass']));
    	$fiche1=htmlentities(mysql_real_escape_string($fichier));	
     
    	mysql_query("INSERT INTO membre (id,pseudo,pass,email) VALUES ('','$pseudo','$pass','$email')");
    	mysql_query("INSERT INTO fiche_membre (id,fiche1) VALUES ('','$fiche1')");	
    	mysql_close();
     
     
    }
    ?>
    Merci à vous

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    Salut

    je te conseille d'aller faire un tour sur la documentation php pour l'upload de fichiers
    http://php.net/manual/fr/features.file-upload.php
    et peut-être aussi de ce côté là
    http://fr.php.net/manual/fr/function...-select-db.php

    ensuite il est bon de debugger avec un petit var_dump()

    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
     
    <?php
    if ( isset($_POST['valider']))
    {
        var_dump($_POST, $_FILES);
     
        $dossier = realpath(dirname(__file__)).'/test13/';
        $fichier = basename($_FILES['fiche1']['name']);
        move_uploaded_file($_FILES['fiche1']['tmp_name'], $dossier . $fichier);
     
        $serveur="sql.free.fr";
        $user="xxxxxxx";
        $passwd="xxxxxxxxxx";
     
        mysql_connect($serveur,$user,$passwd);
        mysql_select_db($user);
     
        $pseudo=htmlentities(mysql_real_escape_string($_POST['pseudo']));
        $email=htmlentities(mysql_real_escape_string($_POST['email']));    
        $pass=htmlentities(mysql_real_escape_string($_POST['pass']));
        $fiche1=htmlentities(mysql_real_escape_string($fichier));    
     
        mysql_query("INSERT INTO membre (id,pseudo,pass,email) VALUES ('','$pseudo','$pass','$email')");
        mysql_query("INSERT INTO fiche_membre (id,fiche1) VALUES ('','$fiche1')");    
        mysql_close();
     
    }
    ?>
    <html>
    <body>
     
    <form action="" method="post" enctype="multipart/form-data">
    Pseudo <input type="text" name="pseudo" /><br />
    Password <input type="password" name="pass" /><br />
    email <input type="text" name="email" /><br />
    fiche <input type="file" name="fiche1" /><br />
    <input type="submit" name="valider" value="valider" /><br />
    </form>
     
    </body>
    </html>

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    et de pas mettre de htmlentities dans ta base aussi

Discussions similaires

  1. [Upload] Upload de fichier réception PHP coté serveur
    Par Watier_53 dans le forum Langage
    Réponses: 4
    Dernier message: 10/03/2008, 10h53
  2. [Upload] upload un fichier en php
    Par isselmoumg dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2008, 15h52
  3. Upload de Fichier pour PHP processing
    Par lekunfry dans le forum Flex
    Réponses: 1
    Dernier message: 05/12/2007, 11h52
  4. [FTP] upload de fichiers via PHP
    Par r-zo dans le forum Langage
    Réponses: 7
    Dernier message: 02/01/2006, 15h29

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