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 24/05/2011, 16h08   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Par défaut Probleme multi upload

Bonjour, je suis actuellement bloqué sur le multi upload. Je m'explique, j'ai réussi a uploader un fichier dans le répertoire que j'ai voulu mais avec plusieurs fichiers on m'a dit qu'il fallait que je présente ma balise sous la forme : <input type="file" name="fichier[]"> mais je n'arrive pas récupérer ces données dans mon script après. J'ai utilisé un foreach.

Partie formulaire.php :
Code :
1
2
3
4
5
6
		<input type="hidden" name="MAX_FILE_SIZE" value="20971520" />
		<br><input type="file" name="fichier" size="30"><br>
		<br><input type="file" name="fichier2" size="30"><br>
		<br><input type="file" name="fichier3" size="30"><br>
		<br><input type="file" name="fichier4" size="30"><br>
		<br><input type="reset" value="Tout annuler"><br>
Partie upload.php :
Code :
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
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 20971520;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début de la boucle des inputs
 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop volumineux';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$fichier = date('Y-m-d-H-i-s').uniqId().$extension;
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
Merci de votre aide
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 16h47   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Un exemple t'aidera sûrement à y voir plus clair:

Coté HTML:
Code :
1
2
3
4
5
6
7
8
9
10
 
<form enctype="multipart/form-data" method="post" action="/axiom/fr/admin/upload" class="ui-widget">
	<input type="file" name="files[]">
	<input type="file" name="files[]">
	<input type="file" name="files[]">
	<input type="file" name="files[]">
	<input type="file" name="files[]">
	<input type="submit" value="Envoyer" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
	<input type="button" id="btnadd" value="Ajouter" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
</form>
Coté PHP:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
        if (isset($_FILES["files"])) {
            foreach ($_FILES["files"]["error"] as $key => $error) {
                if ($error == UPLOAD_ERR_OK) {
                    $tmp_name = $_FILES["files"]["tmp_name"][$key];
                    $name = $_FILES["files"]["name"][$key];
                    $path = APPLICATION_PATH . "/webroot/upload/$name";
                    if (move_uploaded_file($tmp_name, $path)) {
                        self::$_response->addMessage(i18n('admin.files.upload.ok', $name), MESSAGE_WARNING);
                    }
                    else {
                        self::$_response->addMessage(i18n('admin.files.upload.nok', $name), MESSAGE_ALERT);
                    }
                }
            }
        }
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 18h14   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Pour info, avec les navigateurs récents et mis à jour (excepté IE 9) tu peux utiliser l'attribut "multiple" pour permettre le téléchargement multiple avec un seul champ. Avec cette option on peut sélectionner plusieurs fichiers en maintenant la touche Ctrl appuyée (il faut que les fichiers soient dans le même répertoire).

Code :
<input type="file" name="files[]" multiple="multiple" />
Pour le traitement c'est identique à ce qu'à indiqué Benjamin Delespierre
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h47   #4
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Merci de votre aide mais je viens de tester et ça ne marche toujours pas..

Nouveau code :
Code :
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
<html>
	<head>
		<title>upload</title>
	</head>
<body>
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 20971520;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début de la boucle des inputs
if (isset($_FILES["fichier"])) {
            foreach ($_FILES["fichier"]["error"] as $key => $error) {
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop volumineux';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$fichier = uniqId().$extension;
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
}
?>
</body>
</html>
Lorsque je clique sur le bouton "submit" 3 erreurs apparaissent :
Citation:
Warning: basename() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 8
Warning: filesize() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 10
Warning: strrchr() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 12
ainsi que le message :
Citation:
Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
Pouvez-vous me dire a quoi elles correspondent ? Merci
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h01   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 25/05/2011, 10h03   #6
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Excusez-moi je suis nouveau..

Code :
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
 
<html>
	<head>
		<title>upload</title>
	</head>
<body>
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 20971520;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début de la boucle des inputs
if (isset($_FILES["fichier"])) {
            foreach ($_FILES["fichier"]["error"] as $key => $error) {
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop volumineux';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$fichier = uniqId().$extension;
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
}
?>
</body>
</html>
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h46   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
On dirait que tu n'as pas tenu compte de mon exemple: il ne suffit pas de boucler sur $_FILES pour que ton code marche miraculeusement.

Pour accéder au nième fichier dans la liste, il faut utiliser
Code :
$tmp_name = $_FILES["files"]["tmp_name"][$key];
Donc ta boucle est mal formée. Refais là en partant de mon exemple.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h52   #8
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Désolé mais je viens de débuter en php c'est pour cela que je fais des erreurs je pense de débutant encore..

Code modifié :
Code :
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
 
//Début de la boucle des inputs
if (isset($_FILES["fichier"])) {
            foreach ($_FILES["fichier"]["error"] as $key => $error) {   
$dossier = 'upload/';
$fichier = basename($_FILES['fichier']['name'][$key]);
$taille_maxi = 20971520;
$taille = filesize($_FILES['fichier']['tmp_name'][$key]);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop volumineux';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$fichier = uniqId().$extension;
$tmp_name = $_FILES["fichier"]["tmp_name"][$key];
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
}
?>
Merci bien
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 11h34   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
On s'approche.

Quelques erreurs:
Ligne 10
Code :
$extension = strrchr($_FILES['fichier']['name'][$key], '.');
Ligne 29
Code :
if(move_uploaded_file($_FILES['fichier']['tmp_name'][$key], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
Et pense à indenter correctement qu'on puisse te relire
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 11h48   #10
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Je vous remercie de votre aide cela marche parfaitement ! Par contre j'ai encore deux petites questions si vous pouvez encore m'aider, cela concerne l'envoie multiple de mail (je dois faire comme pour les type="file" c'est-à-dire mettre name=email[] ?) et ma deuxième question et le multi upload marche parfaitement sauf que lorsque je ne remplie pas les parcourir, quand je fais submit il me renvoie : Upload effectué avec succès !Upload effectué avec succès !Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi

Merci de votre aide et désolé du dérangement encore
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 12h10   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Tu as oublié de mettre une sécurité sur $_FILE.

De cette façon:
Code :
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
 
<?php
//Début de la boucle des inputs
if (isset($_FILES["fichier"])) {
 
    foreach ($_FILES["fichier"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) { // *********** ICI ************* //
            $dossier = 'upload/';
            $fichier = basename($_FILES['fichier']['name'][$key]);
            $taille_maxi = 20971520;
            $taille = filesize($_FILES['fichier']['tmp_name'][$key]);
            $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
            $extension = strrchr($_FILES['fichier']['name'], '.');
 
            //Début des vérifications de sécurité...
            if(!in_array($extension, $extensions)) { //Si l'extension n'est pas dans le tableau
                $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
            }
 
            if($taille>$taille_maxi) {
                $erreur = 'Le fichier est trop volumineux';
            }
 
            if(!isset($erreur)) { //S'il n'y a pas d'erreur, on upload
                //On formate le nom du fichier ici...
                $fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                $fichier = uniqId().$extension;
                $tmp_name = $_FILES["fichier"]["tmp_name"][$key];
                if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) { //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                    echo 'Upload effectué avec succès !';
                }
                else { //Sinon (la fonction renvoie FALSE). 
                    echo 'Echec de l\'upload !';
                }
            }
            else {
                echo $erreur;
            }
        }
        else {
            echo "Error lors de l'upload du fichier";
        }
    }
}
?>
Pour l'envoi multiple d'emails, tu peux utiliser la même forme pour le nom du champ input (par exemple name="destinations[]"). Coté PHP tu réccupère un tableau tout simple.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h12   #12
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Merci de votre aide encore. Je n'ai pas compris la sécurité pour $FILES et pour l'envoi de mails je pense que j'ai saisi le raisonnement avec le array.

Cordialement
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h14   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Code :
$error == UPLOAD_ERR_OK
Permet de vérifier que l'envoi du fichier à bien été effectué et que le champ n'a pas été laissé vide
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h29   #14
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
D'accord c'est ce que je cherchais merci beaucoup. Une dernière question comment faire pour que le message : "Upload effectué avec succès !" n'apparaisse pas 4 fois si l'utilisateur upload 4 fois des fichiers.

Cordialement
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h01   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
C'est quelque chose que tu devrais savoir faire par toi même.

On pourrait faire ça avec un compteur tout simple, ça ressemblerait à:
Code :
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
 
<?php
//Début de la boucle des inputs
if (isset($_FILES["fichier"])) {
 
    $upload_results = array();
    foreach ($_FILES["fichier"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $dossier = 'upload/';
            $fichier = basename($_FILES['fichier']['name'][$key]);
            $taille_maxi = 20971520;
            $taille = filesize($_FILES['fichier']['tmp_name'][$key]);
            $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
            $extension = strrchr($_FILES['fichier']['name'], '.');
 
            //Début des vérifications de sécurité...
            if(!in_array($extension, $extensions)) { //Si l'extension n'est pas dans le tableau
                $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
            }
 
            if($taille>$taille_maxi) {
                $erreur = 'Le fichier est trop volumineux';
            }
 
            if(!isset($erreur)) { //S'il n'y a pas d'erreur, on upload
                //On formate le nom du fichier ici...
                $fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                $fichier = uniqId().$extension;
                $tmp_name = $_FILES["fichier"]["tmp_name"][$key];
                $upload_results[$fichier] = move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier);
            }
            else {
                echo $erreur;
            }
        }
        else {
            echo "Error lors de l'upload du fichier";
        }
    }
 
    echo count(array_keys($upload_results[$fichier], true, true)) . " fichiers envoyés avec succès";
    echo count(array_keys($upload_results[$fichier], false, true)) . " fichiers n'ont pas été envoyés";
}
?>
Je te laisse peaufiner tout ça.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h33   #16
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Je n'ai pas compris la fonction array_keys.. et ni pourquoi vous avez créé un array désolé. Je pensais qui fallait faire un if

Cordialement
Ercan67000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h01   #17
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonsoir,

Utilise strtolower pour l'extension sinon les fichiers avec les extensions en Majuscule ne passe pas.

Code :
in_array(strtolower($extension), $extensions)
Citation:
Je n'ai pas compris la fonction array_keys.. et ni pourquoi vous avez créé un array désolé.
array est un tableau pour stocker plusieurs valeurs.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 18h13   #18
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
comme décrit dans la doc de array_keys, cette fonction sert deux buts: déterminer si un élément est présent dans un tableau et obtenir les clés des éléments d'un tableau. Dans notre cas, on s'en sert pour trouver les retours true et false renvoyés par move_uploaded_file afin de les compter et n'afficher un message qu'une seule fois.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 18h14   #19
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Quand on comprend pas, la meilleure méthode est encore de commencer par regarder sur le manuel

Donc array_keys retourne les clés d'un tableau avec éventuellement en deuxième paramètre une fonction de tri, et en troisième paramètre le mode de comparaison de la fonction de tri.

Code :
$upload_results[$fichier] = move_uploaded_file(...);
$upload_results stocke le résultat de move_uploaded_file qui retourne soit true soit false.

en faisant array_keys($upload_results[$fichier], true, true) on retourne donc le tableau des fichiers qui ont été téléchargés, et avec array_keys($upload_results[$fichier], false, true) le tableau des fichiers qui ne l'ont pas été.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 19h08   #20
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2011
Messages : 124
Points : 11
Points : 11
Merci beaucoup de votre aide vous m'avez beaucoup aidé et désolé de la gène encore !
Ercan67000 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 14h19.


 
 
 
 
Partenaires

Hébergement Web