Bonjour,
j'ai crée un formulaire web en html avec traitement fichier php et les données sont envoyées par email.
J'ai rajouté la possibilité d'envoyer un fichier en plus de toutes les autres données.
Ca fonctionne mais pas tout à fait comme je le voudrais.
Avant que je n'ajoute le traitement du fichier, lorsqu'on cliquait sur "envoyer"/submit, le visiteur était redirigé vers une page de mon site (succes.html). Maintenant, il m'indique seulement "fichier envoyé correctement".
Je voudrais donc renvoyer vers la page comme avant mais je n'y arrive pas.
Deuxième soucis: le fichier est bien uploadé sur mon serveur. Je voudrais aussi:
soit rajouter dans le mail qu'un fichier a été joint et le nom de ce fichier
soit le mettre en attachement au mail (j'imagine que c'est moins secur? ).
Le formatage du nom du fichier ne fonctionne pas non plus.
voici le code du fichier .php:
<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','[email protected]'); // remplacer par email production après config
define('MAIL_SUJET','Recapitulatif de demande (BETA Version V0.1)');
// vérification des champs contact
if (empty($_POST['name']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre email<br/>";
// si un champ est vide, on affiche le message d'erreur à la page erreur.htm
if (strlen($message) > strlen($msg_erreur)) {
header('Location: form-error.htm');
exit();
// sinon c'est ok on envoi le mail
} else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
$dossier = 'uploads/';
$fichier = basename($_FILES['fichierlogo']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['fichierlogo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['fichierlogo']['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 ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
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);
if(move_uploaded_file($_FILES['fichierlogo']['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;
}
//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['name']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps .= "Bonjour $name\n";
$mail_corps .= "Nous avons bien recu votre demande et nous vous en remercions.\n";
$mail_corps .= "Voici le recapitulatif de votre demande:\n";
$mail_corps .= "Commande de :\n";
$mail_corps .= "$typecommande\n";
$mail_corps .= "$qte\n";
$mail_corps .= "$choix_couleur_impression_ballon\n";
$mail_corps .= "$couleur\n";
$mail_corps .= "$name\n";
$mail_corps .= "$prenom\n";
$mail_corps .= "$societe\n";
$mail_corps .= "$email\n";
$mail_corps .= "$telephone\n";
$mail_corps .= "$tva\n";
$mail_corps .= "$adresse\n";
$mail_corps .= "$cp\n";
$mail_corps .= "$localite\n";
$mail_corps .= "$email\n";
$mail_corps .= "$devis\n";
$mail_corps .= "$commentaire\n";
$mail_corps .= "Notre service client validera votre demande dans les meilleurs delais.";
$mail_corps .= "$fichierlogo\n";
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié message sur page destinataire
header('Location: form-success.htm');
exit();
//Le mail n'a pas été expédié message sur erreur
header('Location: form-error.htm');
exit();
}
}
?>
Merci d'avance de m'aider à corriger le code.
Bonjour,
j'ai crée un formulaire web en html avec traitement fichier php et les données sont envoyées par email.
J'ai rajouté la possibilité d'envoyer un fichier en plus de toutes les autres données.
Ca fonctionne mais pas tout à fait comme je le voudrais.
Avant que je n'ajoute le traitement du fichier, lorsqu'on cliquait sur "envoyer"/submit, le visiteur était redirigé vers une page de mon site (succes.html). Maintenant, il m'indique seulement "fichier envoyé correctement".
Je voudrais donc renvoyer vers la page comme avant mais je n'y arrive pas.
Deuxième soucis: le fichier est bien uploadé sur mon serveur. Je voudrais aussi:
soit rajouter dans le mail qu'un fichier a été joint et le nom de ce fichier
soit le mettre en attachement au mail (j'imagine que c'est moins secur? ).
Le formatage du nom du fichier ne fonctionne pas non plus.
voici le code du fichier .php:
[php]<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','
[email protected]'); // remplacer par email production après config
define('MAIL_SUJET','Recapitulatif de demande (BETA Version V0.1)');
// vérification des champs contact
if (empty($_POST['name']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre email<br/>";
// si un champ est vide, on affiche le message d'erreur à la page erreur.htm
if (strlen($message) > strlen($msg_erreur)) {
header('Location: form-error.htm');
exit();
// sinon c'est ok on envoi le mail
} else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
$dossier = 'uploads/';
$fichier = basename($_FILES['fichierlogo']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['fichierlogo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['fichierlogo']['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 ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
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);
if(move_uploaded_file($_FILES['fichierlogo']['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;
}
//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['name']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps .= "Bonjour $name\n";
$mail_corps .= "Nous avons bien recu votre demande et nous vous en remercions.\n";
$mail_corps .= "Voici le recapitulatif de votre demande:\n";
$mail_corps .= "Commande de :\n";
$mail_corps .= "$typecommande\n";
$mail_corps .= "$qte\n";
$mail_corps .= "$choix_couleur_impression_ballon\n";
$mail_corps .= "$couleur\n";
$mail_corps .= "$name\n";
$mail_corps .= "$prenom\n";
$mail_corps .= "$societe\n";
$mail_corps .= "$email\n";
$mail_corps .= "$telephone\n";
$mail_corps .= "$tva\n";
$mail_corps .= "$adresse\n";
$mail_corps .= "$cp\n";
$mail_corps .= "$localite\n";
$mail_corps .= "$email\n";
$mail_corps .= "$devis\n";
$mail_corps .= "$commentaire\n";
$mail_corps .= "Notre service client validera votre demande dans les meilleurs delais.";
$mail_corps .= "$fichierlogo\n";
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié message sur page destinataire
header('Location: form-success.htm');
exit();
//Le mail n'a pas été expédié message sur erreur
header('Location: form-error.htm');
exit();
}
}
?>[/php]
Merci d'avance de m'aider à corriger le code.