Bonjour, (J'espère avoir posté où il fallait
)
J'ai un formulaire généré par Rapidweaver (bêta 3) qui fonctionne très bien excepté un petit détail, l'attaché ne s'attache pas. Et étant donné qu'il est obligatoire, le formulaire répond merde quand on essaie de l'envoyer.
Son fonctionnement est simple : quand le formulaire (généré en partie par du php, je ne sais pas pourquoi) est envoyé, mailer.php vérifie que rien de ce qui est obligatoire n'est vide (sinon il recharge la page avec un message en plus et n'envoie pas de mail) puis envoie le mail (et affiche aussi un message en rechargeant la page)
Voici le formulaire
Et voici le mailer brut (je le modifie avant upload parce-que les devs n'ont pas pensés aux francophones
)
J'ai déjà cherché sur les forums officiels, mais je n'ai pas trouvé de solution, j'ai juste appris que ça fonctionnait sur certains serveurs et pas sur d'autres. Ça me laisse penser que mon formulaire doit utilise une fonction de PHP pas très bien implantée...
Forums de Realmac Software - Problem with Attachments
Mon problème est que mes connaissances en PHP sont plus que primaires, ce qui m'empêche de corriger ce bug seul. (Ok, je vais lire un livre et plus faire chier, c'est promis
)
Merci, et en espérant que le problème soit tout bête
Whisno

J'ai un formulaire généré par Rapidweaver (bêta 3) qui fonctionne très bien excepté un petit détail, l'attaché ne s'attache pas. Et étant donné qu'il est obligatoire, le formulaire répond merde quand on essaie de l'envoyer.
Son fonctionnement est simple : quand le formulaire (généré en partie par du php, je ne sais pas pourquoi) est envoyé, mailer.php vérifie que rien de ce qui est obligatoire n'est vide (sinon il recharge la page avec un message en plus et n'envoie pas de mail) puis envoie le mail (et affiche aussi un message en rechargeant la page)
Voici le formulaire
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Tout ce qui est ici, on s'en fout -->
<!-- Start content -->
<div class="message-text">
<?php
if (!$_SESSION['formMessage']) {
echo "Ajouter une synthèse";
} else {
echo $_SESSION['formMessage'];
}
?>
</div>
<br />
<form action="./files/mailer.php"
method="post"
enctype="multipart/form-data">
<label>Classe</label> *
<br />
<select name="form_element0">
<option <?php if ($_SESSION['form_element0'] == "1ère") { echo "selected"; } ?>
value="1ère">
1ère
</option>
<option <?php if ($_SESSION['form_element0'] == "2ème") { echo "selected"; } ?>
value="2ème">
2ème
</option>
<option <?php if ($_SESSION['form_element0'] == "3ème") { echo "selected"; } ?>
value="3ème">
3ème
</option>
<option <?php if ($_SESSION['form_element0'] == "4ème") { echo "selected"; } ?>
value="4ème">
4ème
</option>
<option <?php if ($_SESSION['form_element0'] == "5ème") { echo "selected"; } ?>
value="5ème">
5ème
</option>
<option <?php if ($_SESSION['form_element0'] == "6ème") { echo "selected"; } ?>
value="6ème">
6ème
</option>
</select>
<br />
<br />
<label>Option</label>
<br />
<input class="form-input-field"
type="text"
value="<?php echo $_SESSION['form_element1']; ?>"
name="form_element1"
size="40" />
<br />
<br />
<label>Matière</label> *
<br />
<input class="form-input-field"
type="text"
value="<?php echo $_SESSION['form_element2']; ?>"
name="form_element2"
size="40" />
<br />
<br />
<label>Choisissez la synthèse sur votre
ordinateur</label> *
<br />
<input type="file"
name="form_element3" />
<br />
<br />
<label>Nom de la synthèse</label> *
<br />
<input class="form-input-field"
type="text"
value="<?php echo $_SESSION['form_element4']; ?>"
name="form_element4"
size="40" />
<br />
<br />
<label>Courte description de la synthèse</label> *
<br />
<textarea class="form-input-field"
name="form_element5"
rows="8"
cols="38">
<?php echo $_SESSION['form_element5']; ?>
</textarea>
<br />
<br />
<label>Votre adrese e-mail</label>
<br />
<input class="form-input-field"
type="text"
value="<?php echo $_SESSION['form_element6']; ?>"
name="form_element6"
size="40" />
<br />
<br />
<input class="form-input-button"
type="reset"
name="resetButton"
value="Effacer" /> <input class="form-input-button"
type="submit"
name="submitButton"
value="Envoyer" />
</form><?php session_destroy(); ?>
<div class="clearer"></div>
<!-- Tout ce qui est ici, on s'en fout -->
</div><!-- End content -->
<!-- Tout ce qui est ici, on s'en fout -->
Et voici le mailer brut (je le modifie avant upload parce-que les devs n'ont pas pensés aux francophones

<?php
session_start();
$_SESSION['form_element0'] = $_POST['form_element0'];
$_SESSION['form_element1'] = $_POST['form_element1'];
$_SESSION['form_element2'] = $_POST['form_element2'];
$_SESSION['form_element3'] = $_POST['form_element3'];
$_SESSION['form_element4'] = $_POST['form_element4'];
$_SESSION['form_element5'] = $_POST['form_element5'];
$_SESSION['form_element6'] = $_POST['form_element6'];
$form_element0 = $_SESSION['form_element0'];
$form_element1 = $_SESSION['form_element1'];
$form_element2 = $_SESSION['form_element2'];
$form_element3 = $_SESSION['form_element3'];
$form_element4 = preg_replace("/
/", "", $_SESSION['form_element4']);
$form_element4 = preg_replace("/
/", "", $_SESSION['form_element4']);
$form_element5 = $_SESSION['form_element5'];
$form_element6 = preg_replace("/
/", "", $_SESSION['form_element6']);
$form_element6 = preg_replace("/
/", "", $_SESSION['form_element6']);
if(!$_SESSION['form_element0'] || !$_SESSION['form_element2'] || !$_SESSION['form_element3'] || !$_SESSION['form_element4'] || !$_SESSION['form_element5']) {
$_SESSION['formMessage'] = " Please fill out all the required fields. <br />Les champs marqués de * sont obligatoires.\n";
Header("Location:../send_syn.php");
exit();
} else {
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$tmp_name = $_FILES['form_element3']['tmp_name'];
$type = $_FILES['form_element3']['type'];
$name = $_FILES['form_element3']['name'];
$size = $_FILES['form_element3']['size'];
$email="whisno@gmail.com";
$from = stripslashes($form_element6)."<".stripslashes($form_element6).">";$subject= $form_element4;$message = "\nClasse $form_element0\n\nOption $form_element1\n\nMatière $form_element2\n\nChoisissez la synthèse sur votre ordinateur $form_element3\n\nNom de la synthèse $form_element4\n\nCourte description de la synthèse $form_element5\n\nVotre adrese e-mail $form_element6\n";
$headers="From: $from\n";if (file_exists($tmp_name)){
if(is_uploaded_file($tmp_name)){
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$headers .= "MIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n";
$headers .= "boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
}
SESSION_UNREGISTER('form_element0');
SESSION_UNREGISTER('form_element1');
SESSION_UNREGISTER('form_element2');
SESSION_UNREGISTER('form_element3');
SESSION_UNREGISTER('form_element4');
SESSION_UNREGISTER('form_element5');
SESSION_UNREGISTER('form_element6');
if (@mail($email, $subject, $message, $headers)) {$_SESSION["formMessage"] = " Merci !
";
header("Location: ../send_syn.php");
} else {
$_SESSION["formMessage"] = "Im sorry, there seems to have been an error trying to send your email. Please try again.";
header("Location: ../send_syn.php");
}
}
?>
J'ai déjà cherché sur les forums officiels, mais je n'ai pas trouvé de solution, j'ai juste appris que ça fonctionnait sur certains serveurs et pas sur d'autres. Ça me laisse penser que mon formulaire doit utilise une fonction de PHP pas très bien implantée...
Forums de Realmac Software - Problem with Attachments
Mon problème est que mes connaissances en PHP sont plus que primaires, ce qui m'empêche de corriger ce bug seul. (Ok, je vais lire un livre et plus faire chier, c'est promis

Merci, et en espérant que le problème soit tout bête

Whisno