Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 14h08   #1
Nouveau Membre du Club
 
Avatar de bionicleman
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 34
Points : 34
Par défaut Upload de fichier, comment s'en dépatouiller ?

Bonjour,
Malgrès tous les tutoriels déjà présents sur le net j'ai un soucis au niveau de mon formulaire :
j'ai un formulaire contenant plusieurs champs <input type="text"/> et deux <form method="post" enctype="multipart/form-data"> (le premier servira à uploader un .exe, le second une image).
Voilà mon code :

Formulaire :
Code html :
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
 
<form method="post" action="upload.php">
                <h1>Ajouter une création</h1>
                <p>Il vous suffit de remplir le formulaire suivant et de le valider.<br/>
                Tous les champs sont obligatoires, sauf indications contraires.</p><br />
                <h1>A propos de vous</h1>
                <table>        
                    <tr>
                        <td>Votre nom/pseudo :<br/>
                        <input type="text" name="nom" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Votre site (optionnel) :<br/>
                        <input type="text" name="site" value="http://" size="50"/><br/>
                        <p><font size=1><i>Exemple d'URL : http://www.monsite.fr</i></font></p><br/>
                        </td>
                    </tr>
                </table>
                <h1>Votre logiciel</h1>
                <table>
                    <tr>
                        <td>Nom du logiciel :<br/>
                        <input type="text" name="nomexe" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Description :<br/>
                        <textarea name="comm" rows="10" cols="37"></textarea><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Langage :<br/>
                        <input type="text" name="langage" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Taille :<br/>
                        <input type="text" name="taille" size="50"/><br/>
                        <p><font size=1><i>La taille doit exclusivement être un nombre.</i></font></p><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Le logiciel : <br/>
                            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" >
                            <input type="file" name="log" class="parc" size="35">
                            <p><font size=1><i>Attention, vous ne pouvez uploader que des exécutables de <strong>moins de 1Mo</strong>.</i></font></p>
                            <br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Image : <br/>
                            <form method="post" enctype="multipart/form-data" action="upload.php">
                            <input type="hidden" name="MAX_FILE_SIZE" value="5000000" >
                            <input type="file" name="img" class="parc" size="35"><br/>
                            <p><font size=1><i>Attention, vous ne pouvez uploader que des images de <strong>moins de 500Ko</strong> ayant une des extentions suivantes : 
                            <table>
                                <tr>
                                    <td >.png<br/>.gif</td><td>.jpg<br/>.jpeg</td><td>.bmp<br/>.bitmap</td>
                                </tr>
                            </table>
                            <input type="submit" name="upload" value="Uploader" class="btn"/>
                            </i></font></p>
                            <br/>
                            </form>
                        </td>
                    </tr>                                       
                </table>
                <table>
                    <tr>
                        <td><input type="submit" value="Envoyer" class="btn"/> <input type="reset" value="Annuler" class="btn"/></td>
                    </tr>
                </table>
            </form>



Et ma page Php :
Code php :
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
 
<?php
 
if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'images/'; // dossier où sera déplacé le fichier
 
    $tmp_file = $_FILES['img']['tmp_name'];
 
    if( !is_uploaded_file($tmp_file) )
    {
        exit("L'image est introuvable, veuillez réessayer");
    }
 
    // on vérifie maintenant l'extension
    $type_file = $_FILES['img']['type'];
 
    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image valide ou le format n'est peut-être pas pris en compte.<br/>
              Veuillez vous référer à la page précédente pour savoir les formats d'images pris en chage.");
    }
 
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['img']['name'];
 
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier l'image. Veuillez réessayer.");
    }
 
    echo "Le fichier a bien été uploadé";
}
 
?>


Le fichier PHP est pour l'instant basique, je voudrais faire marcher l'upload avant de le peaufiner.

J'ai une erreur lors de la validation de mon formulaire, à la ligne :
Code php :
$tmp_file = $_FILES['img']['tmp_name'];


Citation:
Notice: Undefined index: img in c:\program files\easyphp-modgsi\www\site perso\upload.php on line 7
L'image est introuvable, veuillez réessayer
Voilà, je ne sais plus que faire.
Un peu d'aide sera la bien venue
Merci d'avance !
__________________
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
bionicleman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h14   #2
Membre Expert
 
Avatar de Jumano
 
Inscription : février 2007
Messages : 1 162
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 1 162
Points : 1 369
Points : 1 369
Bonjour,
Dans un premier temps tu ne dois pas imbriquer des formulaires les uns dans les autres.
Modifie déjà ton code à ce niveau ...
Tu as également deux champs qui porte le même nom : name="MAX_FILE_SIZE" ...
Jumano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 19h20   #3
Nouveau Membre du Club
 
Avatar de bionicleman
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 34
Points : 34
Merci de cette réponse,
j'ai modifié mon code comme tu me l'as dit :
Code html :
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
<form method="post" action="upload.php">
                <h1>Ajouter une création</h1>
                <p>Il vous suffit de remplir le formulaire suivant et de le valider.<br/>
                Tous les champs sont obligatoires, sauf indications contraires.</p><br />
                <h1>A propos de vous</h1>
                <table>        
                    <tr>
                        <td>Votre nom/pseudo :<br/>
                        <input type="text" name="nom" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Votre site (optionnel) :<br/>
                        <input type="text" name="site" value="http://" size="50"/><br/>
                        <p><font size=1><i>Exemple d'URL : http://www.monsite.fr</i></font></p><br/>
                        </td>
                    </tr>
                </table>
                <h1>Votre logiciel</h1>
                <table>
                    <tr>
                        <td>Nom du logiciel :<br/>
                        <input type="text" name="nomexe" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Description :<br/>
                        <textarea name="comm" rows="10" cols="37"></textarea><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Langage :<br/>
                        <input type="text" name="langage" size="50"/><br/><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Taille :<br/>
                        <input type="text" name="taille" size="50"/><br/>
                        <p><font size=1><i>La taille doit exclusivement être un nombre.</i></font></p><br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Le logiciel : <br/>
                            <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" >
                            <input type="file" name="log" class="parc" size="35">
                            <p><font size=1><i>Attention, vous ne pouvez uploader que des exécutables de <strong>moins de 1Mo</strong>.</i></font></p>
                            <br/>
                        </td>
                    </tr>
                    <tr>
                        <td>Image : <br/>
                            <input type="hidden" name="MAX_FILE_SIZE" value="5000000" >
                            <input type="file" name="img" class="parc" size="35"><br/>
                            <p><font size=1><i>Attention, vous ne pouvez uploader que des images de <strong>moins de 500Ko</strong> ayant une des extentions suivantes : 
                            <table>
                                <tr>
                                    <td >.png<br/>.gif</td><td>.jpg<br/>.jpeg</td><td>.bmp<br/>.bitmap</td>
                                </tr>
                            </table>
                            </i></font></p>
                            <br/>
                        </td>
                    </tr>                                       
                </table>
                <table>
                    <tr>
                        <td><input type="submit" value="Envoyer" name="valider" class="btn"/> <input type="reset" value="Annuler" class="btn"/></td>
                    </tr>
                </table>
            </form>
Ma page PHP n'a pas changé si ce n'est la premiere ligne :
Code php :
if( isset($_POST['valider']) ) // si formulaire soumis

D'après mes tests, c'est l'entrée $_FILES qui pose soucis, car, j'ai une erreur toutes les fois où celle-ci est appelée.
__________________
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
bionicleman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 20h54   #4
Membre Expert
 
Avatar de Jumano
 
Inscription : février 2007
Messages : 1 162
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 1 162
Points : 1 369
Points : 1 369
Bonsoir,
Tu dois modifier ta balise <form> comme ceci :
Code :
<form method="post" action="upload.php" enctype="multipart/form-data">
Modifie également tes deux noms identiques pour les champs "MAX_FILE_SIZE"
Code :
1
2
<input type="hidden" name="MAX_FILE_SIZE_LOG" value="1000000000" >
<input type="hidden" name="MAX_FILE_SIZE_IMG" value="5000000" >
A modifier également dans tes requètes SQL.

Tu devrais également créer un champs caché à côté de ton bouton "Valider" et plutot faire le test (isset) sur celui-ci et non sur le bouton.
Vérification de l'envoi d'un formulaire par son bouton non fiable
Jumano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 10h58   #5
Nouveau Membre du Club
 
Avatar de bionicleman
 
Inscription : juillet 2006
Messages : 127
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 127
Points : 34
Points : 34
Bonjour !
Merci beaucoup jumano, ton aide m'a été précieuse !
Mon upload marche totalement maintenant
Merci encore ! ++
__________________
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
bionicleman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h44.


 
 
 
 
Partenaires

Hébergement Web