Bonjour,
je fais face à un problème de formulaire, au niveau de l'envoi de document attaché.
Cette fonction, je ne l'ai pas codée moi même, je n'ai pas le niveau pour celà.
Théoriquement, la fonction doit vérifier le type de document attaché (limité à : doc, docx, rtf, jpg, pdf et odt), et si celui-ci convient, stocker ce fichier dans un dossier sur le serveur.
Parallèlement, le serveur envoie un mail à un utilisateur désigné, avec (en plus des champs remplis par l'expéditeur) un lien vers le document "à télécharger".
Au moment des tests, seuls les types de fichiers pdf, docx et odt s'avèrent accessibles par lien dans le mail. Les autres formats de fichiers ne laissent apparaître aucun lien (bien que les fichiers soient bel et bien sur le serveur).
De plus, par acquis de conscience, j'ai effectué un test avec un document xlsx, théoriquement refusé. Celui-ci passe sans générer de message d'erreur à l'envoi, et fait apparaître un lien dans le mail.
Voici le code de ma page d'envoi formulaire :
<?php
if ($_POST['form_submitter'] == 'Envoyer'){
echo '<a name="formulaire"></a>';
$dest_email = '[email protected]';
$exp_nom = utf8_decode(stripslashes($_POST['nom']).' '.stripslashes($_POST['prenom']));
$exp_email = utf8_decode(stripslashes($_POST['email']));
$exp_titre = utf8_decode(stripslashes($_POST['titre']));
if($_POST['telephone'] != '') {
$exp_tel = '<br />Téléphone: '.utf8_decode(stripslashes($_POST['telephone'])).'<br />';
}
if($_POST['emploi'] != '') {
$exp_emploi = '<br />Emploi recherché: '.utf8_decode(stripslashes($_POST['emploi'])).'<br />';
}
$exp_message = ucfirst($exp_nom).' '.ucfirst($exp_prenom).''
.$exp_emploi.''
.$exp_tel.'
Message:
<br /><br />
'.utf8_decode(nl2br(stripslashes($_POST['message'])));
/* if($_POST['fichier'] != '')
{*/
$content_dir = '/home.10.16/XXXX/www/cv_repository/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
$condition_fichier = 'not_up';
}
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'rtf') && !strstr($type_file, 'doc') && !strstr($type_file, 'docx') && !strstr($type_file, 'pdf') && !strstr($type_file, 'odt') && !strstr($type_file, 'jpg') )
{
$condition_fichier = 'invalid';
}
$name_file = date('Ymdhis').'-'.$_FILES['fichier']['name'];
if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{
$condition_fichier = 'invalide';
}
else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
$condition_fichier = 'not_up';
}
$exp_a = $content_dir.$name_file;
if($exp_a != $content_dir)
{
if($condition_fichier != 'not_up' && $condition_fichier != 'invalid' )
{
$exp_message .= '<br /><br />
<a href="http://www.XXXXX.com/cv_repository/'.rawurlencode($name_file).'">Télécharger le CV joint</a>';
}
}
/*
}*/
if($exp_nom != '' && $exp_email != '') {
$headers ='From: "'.$exp_nom.'"<'.$exp_email.'>'."\n";
$headers .='Reply-To: '.$exp_email."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<html><head><title>'.$exp_titre.'</title></head><body>'.$exp_message.'</body></html>';
if(mail($dest_email, $exp_titre, $message, $headers))
{
$send_success = 'yes';
echo '<br /><br /><h3>Votre message a été envoyé ! Merci.</h3><br /><br />';
}
else
{
$send_success = 'no';
echo 'Le message n\'a pu être envoyé';
}
}
}
?>
Je suis coincé à ce stade. Sachant que mon niveau en php ne me permet pas de comprendre d'où vient le soucis, c'est rageant.
Quelqu'un peut-il m'aider ?
D'avance merci.
paul
Bonjour,
je fais face à un problème de formulaire, au niveau de l'envoi de document attaché.
Cette fonction, je ne l'ai pas codée moi même, je n'ai pas le niveau pour celà.
Théoriquement, la fonction doit vérifier le type de document attaché (limité à : doc, docx, rtf, jpg, pdf et odt), et si celui-ci convient, stocker ce fichier dans un dossier sur le serveur.
Parallèlement, le serveur envoie un mail à un utilisateur désigné, avec (en plus des champs remplis par l'expéditeur) un lien vers le document "à télécharger".
Au moment des tests, seuls les types de fichiers pdf, docx et odt s'avèrent accessibles par lien dans le mail. Les autres formats de fichiers ne laissent apparaître aucun lien (bien que les fichiers soient bel et bien sur le serveur).
De plus, par acquis de conscience, j'ai effectué un test avec un document xlsx, théoriquement refusé. Celui-ci passe sans générer de message d'erreur à l'envoi, et fait apparaître un lien dans le mail.
Voici le code de ma page d'envoi formulaire :
[php]
<?php
if ($_POST['form_submitter'] == 'Envoyer'){
echo '<a name="formulaire"></a>';
$dest_email = '
[email protected]';
$exp_nom = utf8_decode(stripslashes($_POST['nom']).' '.stripslashes($_POST['prenom']));
$exp_email = utf8_decode(stripslashes($_POST['email']));
$exp_titre = utf8_decode(stripslashes($_POST['titre']));
if($_POST['telephone'] != '') {
$exp_tel = '<br />Téléphone: '.utf8_decode(stripslashes($_POST['telephone'])).'<br />';
}
if($_POST['emploi'] != '') {
$exp_emploi = '<br />Emploi recherché: '.utf8_decode(stripslashes($_POST['emploi'])).'<br />';
}
$exp_message = ucfirst($exp_nom).' '.ucfirst($exp_prenom).''
.$exp_emploi.''
.$exp_tel.'
Message:
<br /><br />
'.utf8_decode(nl2br(stripslashes($_POST['message'])));
/* if($_POST['fichier'] != '')
{*/
$content_dir = '/home.10.16/XXXX/www/cv_repository/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
$condition_fichier = 'not_up';
}
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'rtf') && !strstr($type_file, 'doc') && !strstr($type_file, 'docx') && !strstr($type_file, 'pdf') && !strstr($type_file, 'odt') && !strstr($type_file, 'jpg') )
{
$condition_fichier = 'invalid';
}
$name_file = date('Ymdhis').'-'.$_FILES['fichier']['name'];
if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
{
$condition_fichier = 'invalide';
}
else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
$condition_fichier = 'not_up';
}
$exp_a = $content_dir.$name_file;
if($exp_a != $content_dir)
{
if($condition_fichier != 'not_up' && $condition_fichier != 'invalid' )
{
$exp_message .= '<br /><br />
<a href="http://www.XXXXX.com/cv_repository/'.rawurlencode($name_file).'">Télécharger le CV joint</a>';
}
}
/*
}*/
if($exp_nom != '' && $exp_email != '') {
$headers ='From: "'.$exp_nom.'"<'.$exp_email.'>'."\n";
$headers .='Reply-To: '.$exp_email."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<html><head><title>'.$exp_titre.'</title></head><body>'.$exp_message.'</body></html>';
if(mail($dest_email, $exp_titre, $message, $headers))
{
$send_success = 'yes';
echo '<br /><br /><h3>Votre message a été envoyé ! Merci.</h3><br /><br />';
}
else
{
$send_success = 'no';
echo 'Le message n\'a pu être envoyé';
}
}
}
?>
[/php]
Je suis coincé à ce stade. Sachant que mon niveau en php ne me permet pas de comprendre d'où vient le soucis, c'est rageant.
Quelqu'un peut-il m'aider ?
D'avance merci.
paul