Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Vérification de champs de formulaire


bistrophile

Messages recommandés

Bonsoir à tous,

 

si je suis là, c'est que je ne m'en sors pas ... J'ai créé un banal formulaire de contact, avec un peu de php qui fait que lorsque on le valide il m'envoie les résultats sur mon adresse mail. Tres banal, avec des éléments de codes empruntés, et ça marche. Par contre, j'aurais souhaité que certains champs soient remplis obligatoirement avant envoi, et là, ça ne marche pas : on met n'importe quoi dans les champs et hop, ça part ...

 

L'action se passe sous Golive CS d'abobe, sur un PC en XP.

 

J'ai manifestement dû rater un bout de codage, et comme ce n'est pas ma spécialité du tout, j'hésite vraiment à bricoler "à vue" la dedans. Je fais un copier-coller du source de mon formulaire, que je soumets à votre sagacité. Moi, à ce stade, je suis perdu. J'ai remplace par des * le nom de la boite.

 

En + de tout ça, j'avais pensé à insérer un captcha, mais cela me semble 1)controversé et 2) compliqué. Qu'en pensez vous ?

 

Merci de votre aide.

Philippe

 

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<style type=text/css>
input.red {background-color: #cc0000;}
</style>

<style type=text/css>
input.red {background-color: #cc0000; font-weight: bold; font-size: 10px; color: Yellow;}
</style>

<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<link href="../css2009/feuilledestylec2009.css" rel="stylesheet" type="text/css" media="all" />
<title>Demande du dernier tarif **** en vigueur</title>

<script>
function Verif()
  {
     if (document.forms[0].elements[0].value == ""){
     alert("\nLe champ nom commercial (ou enseigne) est obligatoire.\n\n" +
           "Merci de compléter.")
     document.forms[0].elements[0].focus();
     return false;
  }

  else if (document.forms[0].elements[1].value == ""){
     alert("\nLe champ E-mail est obligatoire.\n\n" + 
           "Indiquez votre adresse e-mail.")
     document.forms[0].elements[1].focus();
     return false;
  }

  else if (document.forms[0].elements[1].value.indexOf ('@',0)
   == -1 || document.forms[0].elements[1].value.indexOf ,0)
   == -1){
     alert("\nUne adresse e-mail contient obligatoirement " + 
           "les signes \"@\" et \".\".\n\n" +
           "Entrez correctement votre adresse mail.")
     document.forms[0].elements[1].select();
     document.forms[0].elements[1].focus();
     return false;
  }
  else
  return true;
  }

</SCRIPT>
	<csactions>
		<csaction name="17c0cf800" class="Field Validator" type="onevent" val0="testform" val1="nom commercial (ou enseigne)" val2="0" val3="0" val4="" val5=""></csaction>
	</csactions>
	<csscriptdict import="import">
		<script type="text/javascript" src="../GeneratedItems2009/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '17c0cf800'] = new Array(CSFieldValidate,/*CMP*/ 'testform',/*CMP*/ 'nom commercial (ou enseigne)',0,0,'','');

// --></script>
	</csactiondict>
</head>
<body bgcolor="#ffff99">
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '10dbf2537'] = new Array(CSFieldValidate,'','adresse mail',5,'0','','');
CSAct[/*CMP*/ '10e6758c9'] = new Array(CSFieldValidate,/*CMP*/ 'testform',/*CMP*/ 'code postal',1,5,'','erreur !');

// --></script>
	</csactiondict>
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '10dbf2537'] = new Array(CSFieldValidate,'','adresse mail',5,'0','','');
CSAct[/*CMP*/ '10e460d58'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'code postal',1,5,'','erreur !');

// --></script>
	</csactiondict>
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '1070d6f33'] = new Array(CSFieldValidate,'','code postal',1,'5','','back !');
CSAct[/*CMP*/ '10dbf2537'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'adresse mail',5,0,'','');

// --></script>
	</csactiondict>
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '1070d6f33'] = new Array(CSFieldValidate,'','code postal',1,'5','','back !');
CSAct[/*CMP*/ '10d6439c4'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'adresse mail',5,0,'','stop mail !');

// --></script>
	</csactiondict>
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '106d61451'] = new Array(CSFieldValidate,'form','adresse mail',5,'0','','back !');
CSAct[/*CMP*/ '106f5c692'] = new Array(CSFieldValidate,'form','code postal',1,'5','','');
CSAct[/*CMP*/ '1070d6f33'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'code postal',1,5,'','back !');

// --></script>
	</csactiondict>
	<csscriptdict import="import">
		<script type="text/javascript" src="../../GeneratedItems/CSScriptLib.js"></script>
	</csscriptdict>
	<csactiondict>
		<script type="text/javascript"><!--
CSAct[/*CMP*/ '106d61451'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'adresse mail',5,0,'','back !');
CSAct[/*CMP*/ '106f5c692'] = new Array(CSFieldValidate,/*CMP*/ '',/*CMP*/ 'code postal',1,5,'','');

// --></script>
	</csactiondict>
	<div align="center">
		<form id="testform" method="POST" action="formmail.php" name="testform">
			<div align="left">
				<table width="622" border="0" cellspacing="0" align="center" bgcolor="#ffcc33" height="554">
					<tr>
						<td colspan="3" bgcolor="#ffff99">
							<div align="center">
								<p> <span class="classarial18noirbold">demande de tarif</span><br />
									<span class="classarial10bordeaux"><br class="classarial10noir" />
										<img src="../medias2009/codebarre****entreprise.png" alt="" height="86" width="250" border="0" /><br />
										<font color="#d73765"><br />
											Nos produits sont destinés à  un travail de post-production effectué par des professionnels<br />
											(peintres en lettres, agences de communication et de publicité, signalétique, ...). <br />Nous ne vendons pas en direct aux particuliers, commerçants, artisans, sociétés, etc.<br />
											<br />
										</font></span><span class="classarial18grisbold"><font color="#d73765">vous êtes déjà client chez ****, merci de vous identifier</font></span><span class="classarial10bordeaux"><br />
									</span></p>
							</div>
						</td>
					</tr>
					<tr>
						<td class="classarial12noirbold" colspan="3" bgcolor="#ffcc33"><input type="hidden" name=">>>" value="demande de tarif **** par un client" /></td>
					</tr>
					<tr>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="200">
							<div align="right">
									nom commercial ou enseigne</div>
						</td>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="10"></td>
						<td bgcolor="#ffcc33"><input type="text" name="nom commercial (ou enseigne)" size="50" onfocus="CSAction(new Array(/*CMP*/'17c0cf800'));" csfoc="17c0cf800" /></td>
					</tr>
					<tr>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="200">
							<div align="right">nom / prénom du dirigeant</div>
						</td>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="10"></td>
						<td bgcolor="#ffcc33"><input type="text" name="nom du dirigeant" size="50" /></td>
					</tr>
					<tr>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="200">
							<div align="right">
								votre adresse mail </div>
						</td>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="10"></td>
						<td bgcolor="#ffcc33"><input type="text" name="adresse mail" size="50" /></td>
					</tr>
					<tr>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="200">
							<div align="right">votre téléphone fixe</div>
						</td>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="10"></td>
						<td bgcolor="#ffcc33">
							<div align="left">
								<input type="text" name="telephone fixe" size="24" /></div>
						</td>
					</tr>
					<tr>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="200">
							<div align="right">
								vous avez une<br />peut-être une demande<br />
								complémentaire ?</div>
						</td>
						<td class="classarial12noirbold" bgcolor="#ffcc33" width="10"></td>
						<td bgcolor="#ffcc33"><textarea name="demande precise" rows="4" cols="45"></textarea></td>
					</tr>
					<tr>
						<td class="classarial12noirbold" colspan="3" bgcolor="#ffcc33">
							<div align="center">
								<br />
							</div>
						</td>
					</tr>
					<tr>
						<td class="classarial12noirbold" colspan="3">
							<div align="center">
								<br />
								<input class="red" type="submit" value="envoyer ma demande" />
								<span> <input class="red" type="reset" value="réinitialisation formulaire" tabindex="1" /></span>
								<br />

							</div>
						</td>
					</tr>
				</table>
				<br />
			</div>
		</form>
	</div>
</body>

</html>

Lien vers le commentaire
Partager sur d’autres sites

Le form n'a pas d'attribut onsubmit qui permettrait d'arrêter l'envoi des données lorsque celles-ci sont "fausses" (elles ne vérifient pas les conditions nécessaires), par ailleurs la fonction Verif() est fausse (erreur de syntaxe), donc logiquement aucune vérification ne peut être faite puisque le navigateur ne pourra pas l'interpréter.

   else if (document.forms[0].elements[1].value.indexOf ('@',0)
   == -1 || document.forms[0].elements[1].value.indexOf ,0)
   == -1){

Le second appel à la méthode indexOf() est clairement mauvais (où est la parenthèse ouvrante ? où est le paramètre qui dit ce qu'on est censé chercher ? ...)

Le nommage de tes champs est pour le moins étrange (du moins quand on sait que c'est l'attribut name qui est envoyé dans la requête et qu'on connaît les problèmes que peuvent poser les caractères spéciaux dans les requêtes).

Les différents scripts qui se retrouvent entre balises <csactiondict> écrasent les mêmes éléments avec des choses différentes, es-tu sûr de ne pas avoir défini plusieurs fois certaines actions (au passage, en perdant les premières définitions...) ?

 

Pour le reste du code je ne connais pas GoLive donc je ne pourrai pas t'aider (j'espère tout de même qu'il y a plus que juste les vérifications Javascript pour valider les données reçues... parce que "avoir un @ et un ." c'est pas suffisant pour une adresse mail, et en désactivant Javascript on peut faire manger n'importe quoi à ton formulaire...

 

Bref, copier du code c'est sympa mais c'est très vite limité :-/

 

Pour répondre à tes questions, insérer un système de captcha n'est pas compliqué (il suffit de lire un manuel et de comprendre ce qu'on fait) et ce n'est pas controversé (ou alors on ne fréquente pas les mêmes sites, auquel cas j'aimerais savoir ce qu'il peut y avoir de controversé dans l'utilisation de captchas sachant que depuis que j'en ai mis en place sur nos sites le taux d'inscriptions foireuses est tombé à zéro)

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...