Modification d'un script d'envoi de formulaire

Eléphant du PHP | 355 Messages

22 déc. 2007, 19:13

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 ?
Modifié en dernier par phpdog le 22 déc. 2007, 20:23, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 déc. 2007, 20:20

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)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 355 Messages

22 déc. 2007, 20:24

Je ne sais pas faire en java, tu n'aurai pas un exemple ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 déc. 2007, 20:42

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 ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 355 Messages

23 déc. 2007, 09:29

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

Eléphant du PHP | 185 Messages

23 déc. 2007, 12:15

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);

Eléphant du PHP | 355 Messages

23 déc. 2007, 12:48

Merci beaucoup ;)

Mais comment intégré ca dans mon script ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 déc. 2007, 12:58

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 185 Messages

23 déc. 2007, 13:06

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... ;)
} 
?>

Eléphant du PHP | 355 Messages

23 déc. 2007, 13:16

Merci beaucoup mais ca bug chez moi

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 déc. 2007, 13:16

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 185 Messages

23 déc. 2007, 13:27

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 ?

Eléphant du PHP | 355 Messages

23 déc. 2007, 13:47

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... ;) } ?>

Eléphant du PHP | 185 Messages

23 déc. 2007, 13:50

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 ?

Eléphant du PHP | 355 Messages

23 déc. 2007, 13:51

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 } ?>