Formulaire en php

Fermé
letraitementphp - 17 avril 2008 à 14:14
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 - 24 avril 2008 à 15:04
Bonjour à tous,

je viens de faire un formulaire en php, certes basique, les commandes fonctionnent bien. Cependant, j'aimerais savoir s'il est possible de faire un page intermédiaire pour visualisé les données du formulaire avant l'envoi par mail.

Donc faire :
Page 1 => le formulaire avec bouton envoi vers la page de visualisation
Page 2 => la page de visualisation des données rentrer avec le bouton confirmer avec d'envoyer par mail
Page 3 => la confirmation de l'envoi du mail

Voilà mes codes actuelles :

1.formulaire.html

contenue :

<html>

<head>
</head>

<body>
<div align="center">
<form method="POST" action="formmail.php" >
<input type="hidden" name="subject" value="sujet">
<table>
<tr><td>Votre Nom:</td>
<td><input type="text" name="nom" size="30"></td></tr>
<tr><td>Votre Email:</td>
<td><input type="text" name="email" size="30"></td></tr>
<tr><td>Sujet:</td>
<td><input type="text" name="title" size="30"></td></tr>
<tr><td colspan=2>Commentaires:<br>
<textarea COLS=50 ROWS=6 name="comments"></textarea>
</td></tr>
</table>
<br> <input type="submit" value="Envoyer"> -
<input type="reset" value="Annuler">
</form>
</div>
</body>

</html>

2.formmail.php

Contenue:

<?php
$TO = "mon mail@domain";

$h = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location: http://mon site/confirmation_formulaire.html");

?>
A voir également:

3 réponses

JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
17 avril 2008 à 14:26
Salut,
Je ne comprend pas sur quoi tu butes.
C'est peut être pas toi qui a codé ?

Remplaces action="formmail.php" par une autre page d'un autre nom, qui fera quasi la même chose que fomrmail.php, sauf l'envoi du mail.
Bien sûr il faut réintegrer un formulaire vide, que php rempli avec les infos de formulaire.html.
Dans cette nouvelle page tu mets cette fois action="formmail.php".
Et le tour est joué.

Ju
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
17 avril 2008 à 14:36
Salut letraitementphp,

Ce que tu peux faire, c'est de faire une page2.php

<?php

session_start();
while (list($key, $val) = each($HTTP_POST_VARS)) {
	$message .= "$key : $val\n";
	$_SESSION[$key] = $val;
}
?>

<form action="formmail.php">

Voici les données qui vont être envoyées par e-mail : 
<pre>
$message
</pre>

<input type="submit" value="Envoyer">
</form>
<br/>Si vous n'êtes pas satisfait(e), utilisez la touche "retour" de votre navigateur.


Et le code de formail est légèrement changé ici :
while (list($key, $val) = each($HTTP_POST_VARS)) {
	$message .= "$key : $val\n";
} 


qui devient
session_start();
while (list($key, $val) = each($_SESSION)) {
	$message .= "$key : $val\n";
} 


Et voilà !
N'oublie pas de modifier formulaire.html
<form method="POST" action="page2.php" > 



Raph
0
letraitementphp
18 avril 2008 à 19:26
Salut,
merci pour ta réponse, je testerais dès que possible
0
letraitementphp
20 avril 2008 à 13:48
Salut R4f, je viens de tester tes codes, mais lorsque je clic pour visualisé les informations rentrées la page2.php m'affiche :

Warning: session_start() [function.session-start]: open(/mnt/116/sdb/1/d/jpl26/sessions/sess_ea5e3479faec1f6b61fe59b16b89cbbd, O_RDWR) failed: No such file or directory (2) in /mnt/116/sdb/1/d/jpl26/test/visualisation.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/116/sdb/1/d/jpl26/test/visualisation.php:3) in /mnt/116/sdb/1/d/jpl26/test/visualisation.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/116/sdb/1/d/jpl26/test/visualisation.php:3) in /mnt/116/sdb/1/d/jpl26/test/visualisation.php on line 3
Voici les données qui vont être envoyées par e-mail : 
$message
(bouton envoyer)

Si vous n'êtes pas satisfait(e), utilisez la touche "retour" de votre navigateur. 
Warning: Unknown(): open(/mnt/116/sdb/1/d/jpl26/sessions/sess_ea5e3479faec1f6b61fe59b16b89cbbd, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/116/sdb/1/d/jpl26/sessions) in Unknown on line 0


J'ai également tester en retirant la ligne session-start
cependant le fonction "$message" n'affiche pas les données même en rajoutant les balises php
par conséquant le mail qui est envoyer et vide
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
20 avril 2008 à 14:48
Salut letraitementphp,


1- ne pas retirer le session_start car il est là pas QUE pour faire joli. En fait, je mets les données en session dans la phase 2 pour pouvoir les récupérer lors de la phase 3. Ca éviter d'avoir plein de paramètres à re-passer de la phase 2 à la phase 3.

2- il faut que le session_start soit au tout début de ton script, avant <html> et avant même d'avoir fait le moindre echo. Le fichier doit commencer par
<?php
sessio_start();


3- le soucis est apparemment que les sessions ne sont pas très bien gérées par ton hébergeur. Tu es chez qui ?



Raph

0
letraitementphp
24 avril 2008 à 13:49
Salut,

Merci pour la description de la ligne session_start()

Sinon mon hébergheur est free
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62 > letraitementphp
24 avril 2008 à 15:04
En fait, il faut créer un répertoire sessions à la racine de ton hébergement chez Free


Raph
0