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 09/09/2007, 12h12   #1
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Par défaut Envoyer une photo via mon formulaire

Bonjour,

Sa fais plusieurs jours que je suis bloquer avec mon formulaire je ne sais pas comment faire pour envoyer une photo via mon formulaire dans mon mail ?
Serait il possible d avoir un petit exemple de code car je ne m en sors plus.

Merci à vous.

chris
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 14h04   #2
Membre habitué
 
Avatar de mimagyc
 
Inscription : novembre 2006
Messages : 310
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2006
Messages : 310
Points : 115
Points : 115
pas le temps pour te faire un code, mais le principe serai de upload l'image sur ton site via <input type="file" .... > une fois sur ton site, tu envoie un mail avec un fichier joint qui sera ton image, pour les fichier joins de mail, regarde dans les cours.
mimagyc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 17h18   #3
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

Pourriez vous me dire se qui ne vas pas dans mon code svp je ne parviens pas à recevoir une image ?

merci à vous

upload.html

Code HTML :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<html>
<!-- Date de création: 08/09/2007 -->
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title></title>
  <meta name="description" content="">
  <meta name="keywords" content="">
</head>
<body>
 
<!-- Le type d'encodage des données, enctype, DOIT être spécifié comme ce qui suit -->
<form enctype="multipart/form-data" action="upload.php" method="post">
  <!-- MAX_FILE_SIZE doit précéder le champs input de type file -->
  <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  <!-- Le nom de l'élément input détermine le nom dans le tableau $_FILES -->  
  Envoyez ce fichier : <input name="userfile" type="file" />
  <input type="submit" value="Envoyer le fichier" />
</form>
</body>
</html>

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
 
<?php 
// En PHP < 4.1.0, $HTTP_POST_FILES doit être utilisé 
//    à la place de $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Le fichier est valide, et a été téléchargé 
           avec succès. Voici plus d'informations :\n";
} else {
    echo "Attaque potentielle par téléchargement de fichiers. 
          Voici plus d'informations :\n";
}
 
echo 'Voici quelques informations de débogage :';
print_r($_FILES);
 
echo '</pre>';
 
?>
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 20h30   #4
Membre du Club
 
Inscription : mai 2007
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 60
Points : 46
Points : 46
Salut.

Ce code est celui de php.net si je ne me trompe pas et il fonctionne correctement.

La question est de savoir comment tu l'utilises. Quelle est ta configuration et ton OS, est-ce que tu utilises quelque chose comme EasyPHP (ou encore WAMP), ou as-tu installé chaque chose indépendamment (apache+php(+mysql)) ?

Si tu te situes dans le premier cas, le serveur va essayer de déplacer le fichier à cet endroit, à partir du dossier courant sur lequel est upload.php, soit /var/www/uploads/
Dans le second cas, toujours si tu es sous windows, il va cette fois essayer à partir de la racine de ton disque dur (par exemple c:/var/www/uploads/).

Dans les deux situations, si les répertoires n'existent pas il y aura une erreur. Tu peux essayer de modifier le début de ton script par ça :

Code php :
1
2
3
 
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

Ainsi tu verras si ton image est située au même endroit que celui des scripts.
Augmente aussi la valeur du champ max_file_size, car la valeur renseignée est en octet (sauf erreur de ma part), soit pour le moment une image de 30ko, ce qui est peu.

Si l'image n'est pas là, essaye de faire une recherche du fichier, dès fois qu'il soit au mauvais endroit sur le disque... ça nous donnerait une petite indication.
goulmak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2007, 21h19   #5
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonsoir

Je viens de tester mon formulaire et j obtiens le message suivant :
En rajoutant c est ligne comme dans votre post :
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);


Pour infos j ai easyphp 1.8 et tout fonctionne normalement.

Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :
Voici quelques informations de débogage :Array
(
[userfile] => Array
(
[name] => XP.bmp
[type] => image/bmp
[tmp_name] => /tmp/phpCvTy9x
[error] => 0
[size] => 44154
)

)

cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 06h42   #6
Membre du Club
 
Inscription : mai 2007
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 60
Points : 46
Points : 46
Ok, pour le moment ça ne fonctionne pas, mais on avance un peu je dirais

As-tu augmenté la limite de taille de fichier comme je l'avais suggéré ? C'est à dire en modifiant le champ caché max_file_size ? Tu peux essayer cette valeur :

Code php :
1
2
3
 
// Taille max du fichier, 1Mo
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />

Essaye également d'envoyer un simple fichier texte, très léger avec ou sans contenu.
goulmak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 15h26   #7
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

J ai également essayer d augmenter la taille sa ne fonctionne pas non plus.
Je ne sais plus quoi faire sa fais des jours que je rame la dessu.

Avez vous un solution ?

Merci à vous.

chris
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 16h04   #8
Membre du Club
 
Inscription : mai 2007
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 60
Points : 46
Points : 46
Re bonjour.

J'ai regardé et testé à nouveau tes sources (sur easyphp), et elles fonctionnent chez moi. Les voici, juste un peu modifiées, tu peux les essayer de ton côté mais je doute qu'il y ai du mieux...

upload.html :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<html>
<head>
        <title>Upload</title>
</head>
<body>
 
<form enctype="multipart/form-data" action="upload.php" method="post">
<!-- Taille maximum, 1Mo -->
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input name="userfile" type="file" />
<input type="submit" value="Envoyer" />
</form>
 
</body>
</html>

et upload.php :

Code php :
1
2
3
4
5
6
7
8
9
10
 
<?php
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
if( move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) )
        echo "Fichier envoyé";
else
        echo "Erreur d'envoi";
?>

Ma dernière idée de solution pour le moment proviendrait de la configuration de ton php et de la limitation de l'envoi des fichiers. Pour cela il faut regarder le fichier de configuration de php, qui s'appelle php.ini
Tu peux faire une recherche dans easyphp pour le trouver. Une fois que c'est fait, ouvre le et cherche la partie suivante

Code :
1
2
3
4
5
6
7
8
9
10
 
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
 
; Whether to allow HTTP file uploads.
file_uploads = On
 
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
Par défaut la valeur est de 2Mo, mais il se pourrait qu'elle ne soit pas comme ça chez toi, tu peux essayer de vérifier...

C'est tout ce à quoi je pense, bon courage tout de même
goulmak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 17h34   #9
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
J ai regarder dans mon fichier .ini j ai la même chose que vous, j ai juste encore une question cette variable dans php.ini je dois pas ajouter le répertoir que je veus " upload_tmp_dir = "${path}\tmp\" ?

Merci à vous pour votre aide

chris
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 18h14   #10
Membre du Club
 
Inscription : mai 2007
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 60
Points : 46
Points : 46
Apparement ton fichier de config est normal, donc l'upload doit fonctionner.

Concernant la variable upload_tmp_dir, tu n'es pas obligé d'y toucher à moins que tu veuilles changer le répertoire temporaire d'envoi des fichiers, qui se trouve être pour le moment dans ton cas quelque chose comme "c:\program files\easyphp1-8\tmp"
Le fait de le modifier ne résoudra pas, à priori, ton problème.

As-tu testé ce que je t'ai proposé un peu avant ? Est-ce qu'il y a du mieux ?
goulmak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 07h13   #11
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

J ai tester vos sulotions mes sa fonctionne toujours pas.

Merci à vous de m avoir aider.

chris
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h15   #12
Membre confirmé
 
Inscription : juillet 2007
Messages : 201
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 201
Points : 227
Points : 227
Quel est la taille de ton fichier? s'il fais plus de 2mo tu auras du mal a y parvenir dans ce cas essaie de les envoyer par ftp.
Lis aussi ceci:

http://php.developpez.com/faq/?page=...ers_uploadsize
http://php.developpez.com/faq/?page=..._formuploadftp
acirfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 22h37   #13
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonsoir,

J ai tester avec le fichier uploadftp.php il arrive bien a se connecter mes j ai ceci comme msg : Connecté au FTP
Il y a eu un problème lors du chargement du fichier /tmp/php7oFHEZ


merci à vous.

chris
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h54.


 
 
 
 
Partenaires

Hébergement Web