Se connecter / S'enregistrer
Votre question

Envoie de pièce jointe par formulaire en php

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
10 Avril 2011 22:24:39

Bonsoir,

C'est en désespoir de cause que je viens vers vous.
Je suis en train de créer un site pour mon travail. Il y a sur le site un formulaire pour les demandes de devis. Et j'ai besoin d'y mettre la possibilité d'envoyer un document avec la demande.
Et là, ça se complique.

Du côté HTML, nous avons :
Citation :
<form action="envoi.php" method="post" name="formulaire" onSubmit="return check();">
Raison sociale<br><input type="text" name="raison_sociale" /><br>
Nom et prénom*<br><input type="text" name="nom" /><br>
Adresse e-mail*<br><input type="text" name="email" /><br>
Téléphone<br><input type="text" name="telephone" /><br>
Joindre un fichier<br><input name="fichier" type="file" /><br>
Votre demande*<br><textarea name="demande" cols="60" rows="8"></textarea><br>
<input type="submit" value="Envoyer" /></form>


Et côté php :
Citation :
<?php
$TO = "xxx@gmail.com";
$sujet="Demande de devis";
$h = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
$rs = $_POST['raison_sociale'];
$nom = $_POST['nom'];
$email = $_POST['email'];
$rs = $_POST['raison_sociale'];
$telephone = $_POST['telephone'];
$demande = $_POST['demande'];
$fichier = $_FILES['fichier'];

$infos="
Raison sociale : $rs
Nom : $nom
E-mail : $email
Téléphone : $telephone
Demande : $demande
";

mail($TO, $sujet, $infos, $email);

Header("Location: http://www.yyy.fr");

?>

J'ai bien trouvé des scripts tout prêts, mais impossibles à mettre en place dans mon site. J'ai lu des sujets similaires, mais je ne parviens pas à les rapporter à ma situation.

Concrètement, ce que je souhaiterais :
- taille du fichier jusqu'à 4Mo;
- vérifier le type MIME (.doc, .docx, .pdf, .odt, .txt., .rtf).

Je remercie d'avance les personnes qui pourront m'aider à y voir plus clair.

Autres pages sur : envoie piece jointe formulaire php

a c 145 L Programmation
11 Avril 2011 09:18:33

Tu peux essayer d'utiliser ce que j'ai fait à http://www.g33k-zone.org/post/2009/10/05/Envoyer-un-ema...

Pour vérifier le type mime, tu peux soit te baser sur l'extension avec la petite fonction suivante:
  1. <?php
  2. function bonfichier($fichier) {
  3. $ok = array('doc', 'docx', 'pdf', 'odt', 'txt', 'rtf');
  4. $infos = pathinfo($fichier);
  5. if (in_array($infos['extension'], $ok)) {
  6. return true; // Extension autorisée
  7. } else {
  8. return false; // Extension refusée
  9. }
  10. }

Sinon, tu peux utiliser mime_content_type() qui te retournera le type MIME.

Et pour la limite de 4Mo, il suffit de regarder la valeur de $_FILES['fichier']['size']
m
0
l
12 Avril 2011 00:40:09

Merci beaucoup pour ta réponse. Je vais regarder ça de plus près demain.
m
0
l
Contenus similaires
12 Avril 2011 16:09:40

Alors, après avoir regardé ton lien, ça ne m'avance pas beaucoup ^^ .
Je m'explique.
Il faut d'abord que le script php upload le fichier envoyé, qu'il le stock puis qu'il l'envoie et l'efface du dossier.
Et pour tout ça, je n'ai pas la moindre idée de comment faire.
m
0
l
a c 145 L Programmation
12 Avril 2011 16:45:40

Tu as toute la doc sur http://php.net/move_uploaded_file:
  1. <?php
  2. $uploads_dir = '/uploads';
  3. foreach ($_FILES["pictures"]["error"] as $key => $error) {
  4. if ($error == UPLOAD_ERR_OK) {
  5. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  6. $name = $_FILES["pictures"]["name"][$key];
  7. move_uploaded_file($tmp_name, "$uploads_dir/$name");
  8. }
  9. }


Tu peux donc modifier en:
  1. <?php
  2. $uploads_dir = '/uploads';
  3. foreach ($_FILES["fichier"]["error"] as $key => $error) {
  4. if ($error == UPLOAD_ERR_OK && $_FILES["fichier"]<(4*1024*1024)) {
  5. $tmp_name = $_FILES["fichier"]["tmp_name"][$key];
  6. $name = $_FILES["fichier"]["name"][$key];
  7. move_uploaded_file($tmp_name, "$uploads_dir/$name");
  8. }
  9. if (!bonfichier("$uploads_dir/$name")) {
  10. unlink("$uploads_dir/$name");
  11. echo "Erreur avec l'extension";
  12. } else {
  13. // Ici on crée le mail et on l'envoie
  14. }
  15. }
m
0
l
12 Avril 2011 17:06:23

Merci beaucoup crazycat :)  .
m
0
l
a c 145 L Programmation
12 Avril 2011 22:01:10

De nada
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS