[PHP+javascript] Envoi de form dans un mail :-)

Statut
N'est pas ouverte pour d'autres réponses.

aKC1a

OldSchool CS Star
Voila j'essaie d'envoyer un form de manière structurée dans un mail.

Jusque la aucun soucis.
Mais j'ai rajouter une function javascript pour qu'il controle certains de mes champs de form avant envoi. Emial valide etc ...

et la qd je fait volontairement une faute dans le form il me met bien une alerte comme demandée mais il envoie le form a mon mail quand meme ...

:-(

Est ce que kkun sait d'ou ca vient ?

code javascript :
Code:
<script type="text/javascript">
function verif_champs()
{
	if(document.form1.name.value == "")
	{
		alert("Enter a name please");
		document.forml.name.focus();
		return false;
	}
	if(document.forml.firstname.value == "")
	{
		alert("Enter a firstname please");
		document.forml.firstname.focus();
		return false;
	}
	if(document.forml.society.value == "")
	{
		alert("Enter a Society name please");
		document.forml.society.focus();
		return false;
	}
	if(document.forml.func.value == "")
	{
		alert("Enter your function please");
		document.forml.func.focus();
		return false;
	}
	if(document.forml.mail.value == "")
	{
		alert("Enter an e-mail adress please");
		document.forml.mail.focus();
		return false;
	}
	if(document.forml.adresse.value.indexOf('@') == -1)
	{
		alert("Your e-mail adress is invalid!");
		document.forml.adresse.focus();
		return false;
	}
	if(document.forml.adresse.value.length <7)
	{
		alert("Your e-mail adress is invalid");
		document.forml.adresse.focus();
		return false;
	}
	if(document.forml.phone.value == "")
	{
		alert("Enter a phonenumber please");
		document.forml.phone.focus();
		return false;
	}
}
</script>
code php (placé tout au dessus d ela page, avant la DTD):
Code:
<?php
if($_POST['action'] == 'submitted')
{
	$adress = "blablabla@gmail.com";
	$sujet = "Contact via votre site web";
	$message = "Name: {$_POST['name']}\nFirstname: {$_POST['firstname']}\n";
	$message .= "Society: {$_POST['society']}\nFunc: {$_POST['func']}\n";
	$message .= "Email: {$_POST['mail']}\n";
	$message .= "Phone: {$_POST['phone']}\nMessage: {$_POST['msg']}\n";
	$entete = "From: Isobar_Belgium\n";
	mail($adress, $sujet, $message, $entete);
	//page de sortie
	$insertGoTo = "confirm.php";
	if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    	$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
		$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
		}
	header(sprintf("Location: %s", $insertGoTo));
}
?>
et temps que j'y suis, le code de mon form :)
Code:
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" onSubmit="return verif_champs()">
    			      Name : <input type="text" name="name"><br><br>
					  Firstname : <input type="text" name="firstname"><br><br>
					  Society : <input type="text" name="society"><br><br>
					  Function : <input type="text" name="func"><br><br>
					  E-mail : <input type="text" name="adresse"><br><br>
					  Phone : <input type="text" name="phone"><br><br>
					  Message : <br><textarea name="msg" cols="60" rows="5"></textarea><br><br>
					  <input type="hidden" name="action" value="submitted">
						<input type="submit" name="Submit" value="Envoyer">
  			          </form>
C'est surement une connerie mais je vois pas laquelle :-(
Merci d'avance
 
verif_champ() est une fonction (car il y a des return) que tu utilises comme une procedure :-(;
tu ne "return" jamais true;
tu renvoie un false dans les patates (pas de variable pour l'y mettre!);

mon idée : mettre un simple button qui verifie si les données sont bonnes et si elles sont bonnes, alors tu envoies

pour verif_champ() utilises plutot une structure
Code:
if (première champ incorrect)
elseif (champ suivant incorrect)
elseif (erreur suivante)
else (il n'y a pas d'erreur alors envoyer)
tu auras plus simple pour envoyer au bon moment et tu n'auras plus besoin de return car tu auras une procedure
 

null

ose();
Plus simple, tu mets ta fonction sur "onClick" de "submit" et si tout test "OK", tu fais "this.form.submit();"
 
1er
OP
aKC1a

aKC1a

OldSchool CS Star
c'est bon j'ai trouvé

Merci a tous. :)

Bizoo
 

Ezekiel !

Elite
juste pour info on peut désactivé le java script... Le mieux serai de coupler ton script js avec une verif en php...
 

sebge2

Elite
zywakx a dit:
verif_champ() est une fonction (car il y a des return) que tu utilises comme une procedure :-(;
tu ne "return" jamais true;
tu renvoie un false dans les patates (pas de variable pour l'y mettre!);

mon idée : mettre un simple button qui verifie si les données sont bonnes et si elles sont bonnes, alors tu envoies

pour verif_champ() utilises plutot une structure
Code:
if (première champ incorrect)
elseif (champ suivant incorrect)
elseif (erreur suivante)
else (il n'y a pas d'erreur alors envoyer)
tu auras plus simple pour envoyer au bon moment et tu n'auras plus besoin de return car tu auras une procedure
oui je pensais à la meme chose

function ()
variable=true;
if(champ faux) variable=false;
....
return variable;

au fait c'était quoi la solution à ton problème ?
 
1er
OP
aKC1a

aKC1a

OldSchool CS Star
le truc c pas de faire le plus possible du coté utilisateur plutot ?
 

Xou

I ♥ rien
Tout dépend de ton script...

Si celui ci est lourd, autant l'allégé, sinon, autant vérifier.

Et pis, il vaut mieux être sûr que ce sera bien vérifié, le PHP est plus sûr je pense.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut