Formulaire en php

letraitementphp -  
R4f Messages postés 441 Date d'inscription   Statut Membre Dernière intervention   -
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");

?>

3 réponses

JuB0 Messages postés 654 Date d'inscription   Statut Membre Dernière intervention   81
 
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   Statut Membre Dernière intervention   62
 
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
 
Salut,
merci pour ta réponse, je testerais dès que possible
0
letraitementphp
 
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   Statut Membre Dernière intervention   62
 
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
 
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   Statut Membre Dernière intervention   62 > letraitementphp
 
En fait, il faut créer un répertoire sessions à la racine de ton hébergement chez Free


Raph
0