Page 1 sur 2

Modification d'un script d'envoi de formulaire

Posté : 22 déc. 2007, 19:13
par phpdog
Bonjour, j'ai un script php d'envoi de formulaire:
<?php 
// On récupére le contenu des formulaire dans des variables:
$formMail = $_POST['mail']; 
$formNom = $_POST['nom']; 
$formPrenom = $_POST['prenom'];
$formsociete = $_POST['societe'];
$formactivite = $_POST['activite'];
$formtelephone = $_POST['telephone'];
$formCommentaire = $_POST['commentaire']; 

if(!empty($formPrenom) && !empty($formNom) ){ 

$formCommentaire = htmlentities($formCommentaire); 
// On créer une unique variable contenant toutes les autres varaible du formulaire:
$message = "$formNom $formPrenom vous contact via votre formulaire.\n \n Société: $formsociete \n Activité: $formactivite \n Telephone $formtelephone  \n Mail: $formMail \n \n message : \n $formCommentaire"; 

if( mail('[email protected]','Contact via formulaire ART ANIM',$message) && mail('[email protected]','Contact via formulaire ART ANIM',$message) ){ 
echo 'les informations on bien été envoyé!'; 

} 
else{ echo 'une erreur est survenu lors de l\'envoi du message'; 
} 
} 
else{ echo 'il y a des champs vide echo merci de remplir les champs nom, prenom'; 
} 
?>
Je voudrai qu'une foi la formulaire rempli le message "les informations on bien été envoyé!" soit afficher dix seconde, et je voudrai apré c'est 10 seconde une redirection ver une page html, est-ce possible ?

Si oui comment ?

Je voudrai aussi, si des chan ne sont pas rempli que le message "il y a des champs vide echo merci de remplir les champs nom, prenom'" soit afficher 10 secondes, et aprés c'est 10 seconde que la page revienne en arriérre, est-ce possible ?

Si oui comment ?

Posté : 22 déc. 2007, 20:20
par @rthur
Bonjour,

Tout d'abord, merci de faire attention à la rédaction de tes messages, plus d'une dizaine de fautes en 5 lignes ça commence à faire beaucoup...
Par ailleurs, je te recommande de modifier également ton message précédent afin de retirer les adresses e-mail en clair si tu veux éviter de recevoir du spam.

Pour répondre à tes questions, dans un cas comme dans l'autre c'est très facile à réaliser en Javascript, tu auras besoin de la fonction setTimeout() et pour ta question n°2 de history.go(-1)

Posté : 22 déc. 2007, 20:24
par phpdog
Je ne sais pas faire en java, tu n'aurai pas un exemple ?

Posté : 22 déc. 2007, 20:42
par @rthur
Je ne sais pas faire en java, tu n'aurai pas un exemple ?
Je t'ai donné la piste à suivre,
:google: peut faire le reste ;-)

Posté : 23 déc. 2007, 09:29
par phpdog
J'ai trouver ca:

Code : Tout sélectionner

<SCRIPT language=javascript> function Timer() { var dt=new Date() window.status=dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds(); setTimeout("Timer()",1000); } Timer(); </SCRIPT>
Mais je ne sais pas comment faire pour le redirection aprés 10 secondes

Posté : 23 déc. 2007, 12:15
par Kaoteknik
Bonjour,

tu peux définir une fonction qui recevra en paramètres l'url de redirection et le temps avant que celle-ci ne s'effectue. Soit :
<?php
function redirect ($url, $temps) {
	$temps_ms = $temps * 1000;
?>

	<script type="text/javascript">
		<!--
			function redirect() {
				window.location='<?php $url ?>'
			}
			
			setTimeout('redirect()','<?php $temps_ms ?>');
		-->
	</script>
	
<?php
}
?>

Ensuite, à l'appel de la fonction, tu passes les paramètres nécessaires :
if ($_SERVER['HTTP_REFERER'])
{
    $url_redirect = $_SERVER['HTTP_REFERER'];
}
else
{
    $url_redirect = "index.php";
}

redirect($url_redirect, 10);

Posté : 23 déc. 2007, 12:48
par phpdog
Merci beaucoup ;)

Mais comment intégré ca dans mon script ?

Posté : 23 déc. 2007, 12:58
par zeus
Non mais attends ... c'est du foutage de tête ou quoi ? :evil:

Tu as le code, la théorie, il ne te reste qu'à faire ctrl+c/ctr+v et tu viens nous demander comment l'intégrer :!:

Le bout de code donné par Kaoteknik te permet la redirection après 10s.
Tu veux faire la redirection après la récupération des données ? pose la fonction après la redirection.

Posté : 23 déc. 2007, 13:06
par Kaoteknik
Le premier script contenant la fonction de redirection peut être dans un fichier externe, s'appelant par exemple "redirection.php". Il te faudra ensuite l'inclure dans ta page de formulaire...
<?php 
// On récupére le contenu des formulaire dans des variables:
$formMail = $_POST['mail']; 
$formNom = $_POST['nom']; 
$formPrenom = $_POST['prenom'];
$formsociete = $_POST['societe'];
$formactivite = $_POST['activite'];
$formtelephone = $_POST['telephone'];
$formCommentaire = $_POST['commentaire']; 

// On inclut le fichier contenant la fonction de redirection
include ("redirection.php");


// On définit l'URL de redirection
if ($_SERVER['HTTP_REFERER']) {
    $url_redirect = $_SERVER['HTTP_REFERER'];
}
else {
    $url_redirect = "index.php";
}

if(!empty($formPrenom) && !empty($formNom) ){ 
	$formCommentaire = htmlentities($formCommentaire); 
	// On créer une unique variable contenant toutes les autres varaible du formulaire:
	$message = "$formNom $formPrenom vous contact via votre formulaire.\n \n Société: $formsociete \n Activité: $formactivite \n Telep $formtelephone  \n Mail: $formMail \n \n message : \n $formCommentaire"; 

	if( mail('[email protected]','Contact via formulaire ART ANIM',$message) && mail('[email protected]','Contact via formulaire ART ANIM',$message) ){ 
		echo 'les informations on bien été envoyé!';
		redirect($url_redirect, 10); // On effectue la redirection en fonction de l'url passée en argument et du temps (ici 10 micro-secondes)

	} 
	else{ 
		echo 'une erreur est survenu lors de l\'envoi du message';
		redirect($url_redirect, 10); // Même méthode lorsqu'un autre message apparaît
	} 
} 
else{ 
	echo 'il y a des champs vide echo merci de remplir les champs nom, prenom';
	redirect($url_redirect, 10); // Encore pareil... ;)
} 
?>

Posté : 23 déc. 2007, 13:16
par phpdog
Merci beaucoup mais ca bug chez moi

Posté : 23 déc. 2007, 13:16
par zeus
Merci de ta participation Kaoteknik, mais ce n'est pas aider phpdog que de lui donner une réponse tout faite.

De plus, dans ta solution, tu remarqueras que, dans tous les cas, on va passer par la fonction redirect().
Plutôt que de mettre un redirect dans chaque condition, tu peux te contenter d'en mettre un unique à la fin du script ;)

Posté : 23 déc. 2007, 13:27
par Kaoteknik
Plutôt que de mettre un redirect dans chaque condition, tu peux te contenter d'en mettre un unique à la fin du script ;)
Oui tu as raison, il est possible de simplifier. :oops:

Sinon phpdog, qu'as-tu fais au juste (poste ton code pour qu'on puisse y voir plus clair) ? Et quel message d'erreur as-tu, si toutefois il y en a un ?

Posté : 23 déc. 2007, 13:47
par phpdog
Ben c'est ca:

Code : Tout sélectionner

<?php // On récupére le contenu des formulaire dans des variables: $formMail = $_POST['mail']; $formNom = $_POST['nom']; $formPrenom = $_POST['prenom']; $formsociete = $_POST['societe']; $formactivite = $_POST['activite']; $formtelephone = $_POST['telephone']; $formCommentaire = $_POST['commentaire']; // On inclut le fichier contenant la fonction de redirection include ("redirection.php"); // On définit l'URL de redirection if ($_SERVER['HTTP_REFERER']) { $url_redirect = $_SERVER['HTTP_REFERER']; } else { $url_redirect = "index.htm"; } if(!empty($formPrenom) && !empty($formNom) ){ $formCommentaire = htmlentities($formCommentaire); // On créer une unique variable contenant toutes les autres varaible du formulaire: $message = "$formNom $formPrenom vous contact via votre formulaire.\n \n Société: $formsociete \n Activité: $formactivite \n Telep $formtelephone \n Mail: $formMail \n \n message : \n $formCommentaire"; if( mail('[email protected]','Contact via formulaire ART ANIM',$message) && mail('[email protected]','Contact via formulaire ART ANIM',$message) ){ echo 'les informations on bien été envoyé!'; redirect($url_redirect, 10); // On effectue la redirection en fonction de l'url passée en argument et du temps (ici 10 micro-secondes) } else{ echo 'une erreur est survenu lors de l\'envoi du message'; redirect($url_redirect, 10); // Même méthode lorsqu'un autre message apparaît } } else{ echo 'il y a des champs vide echo merci de remplir les champs nom, prenom'; redirect($url_redirect, 10); // Encore pareil... ;) } ?>

Posté : 23 déc. 2007, 13:50
par Kaoteknik
As-tu bien créé le fichier contenant la fonction de redirection ? Et si oui, se trouve-t-il dans le même répertoire que le script du formulaire ?

Posté : 23 déc. 2007, 13:51
par phpdog
Oui je l'ai créer, et oui il se trouve dans le même répertoire

j'y est mis ca:

Code : Tout sélectionner

<?php function redirect ($url, $temps) { $temps_ms = $temps * 1000; ?> <script type="text/javascript"> <!-- function redirect() { window.location='<?php $url ?>' } setTimeout('redirect()','<?php $temps_ms ?>'); --> </script> <?php } ?>