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

Discussion dans 'Web, design' créé par aKC1a, 12 Mai 2005.

Statut de la discussion:
Fermée.
  1. Offline
    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
    aKC1a, 12 Mai 2005
    #1
  2. Offline
    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
    dania の悪夢, 12 Mai 2005
    #2
  3. Offline
    null ose();
    Plus simple, tu mets ta fonction sur "onClick" de "submit" et si tout test "OK", tu fais "this.form.submit();"
    null, 12 Mai 2005
    #3
  4. Offline
    aKC1a OldSchool CS Star
    c'est bon j'ai trouvé

    Merci a tous. :)

    Bizoo
    aKC1a, 12 Mai 2005
    #4
  5. Offline
    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...
    Ezekiel !, 12 Mai 2005
    #5
  6. Offline
    sebge2 Touriste
    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 ?
    sebge2, 30 Mai 2005
    #6
  7. Offline
    aKC1a OldSchool CS Star
    le truc c pas de faire le plus possible du coté utilisateur plutot ?
    aKC1a, 1 Juin 2005
    #7
  8. Offline
    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.
    Xou, 1 Juin 2005
    #8
Statut de la discussion:
Fermée.