Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2008, 13h35   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : novembre 2007
Messages : 11
Points : 2
Points : 2
Par défaut Vérification des champs d'un formulaire

Bonjour a tout le monde ça fait maintenant quelques temps que je me promène sur ce forum (sans toutefois pouvoir aidé vu mon niveau..) et je vous remercie pour l'aide que ça ma apporté, aujourd'hui je viens avec mon formulaire sous le bras pour un peu aide sur la vérification des champs.

Mon formulaire comporte une grande partie de champs obligatoire et quelques champs facultatifs.
J'aimerais que les champs obligatoire soit remplis et ne contiennent pas de caractères spéciaux ainsi que vérifier le format de l'adresse e-mail

Il en découle donc que les champs facultatifs peuvent être vides et si ils sont remplis pas de caractères spéciaux non plus.
J'ai aussi dans ces champs facultatifs la possibilité de mettre une photo dont j'aimerais vérifier la taille si elle est présente.

Maintenant le code que j'ai tenté pour respecter ces conditions:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ($_POST) // plus précisément fodrai mettre un champ caché ds le html avec une value kelconque, verifier $_POST[hidden_name] == hidden_value mé bon ca marche kan mem la
{
	$form_error = "";
	while(list($id,$value) = each($_POST)) //Test sur remplissage des champs vide obligatoire et contenant des caracteres interdit 
	{
		if (!empty($value) && !preg_match('/^[a-z0-9]+$/i', $value) )
		//if(empty($value) && $id != "photo" && $id != "street2" && $id != "url" && $id != "description" && $id != "mail") 
			$form_error .= "Le champ ".$id." est vide ou incorrect<br />";
		//if (!preg_match('/^[a-z0-9]+$/i', $value) )
		//	$form_error .= "Le champ ".$id." est incorrect <br />";
	}
 
	if ($_POST[pass] == $_POST[repass])  // Test sur password
		$form_error .= "password verification : OK";
	else
		$form_error .= "password error";
 
 
	if ($_POST['mail'])   //Test sur l'adresse mail
	{
		$_POST['mail'] = htmlspecialchars($_POST['mail']); // faut utiliser htmlspecialchars sur chaq champs $_POST n'est il pas ? 
			if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
			$form_error .= "mail ok";
			else
			$form_error .= "Invalid mail format";
	}
	if ($form_error == "") // aucune erreur détectée
		header('?page=confirm.php'); // redirection
}

Merci beaucoup de l'aide que vous pourrez m'apporter!
-fleo- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2008, 16h25   #2
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Bonjour,

Et il marche ou pas ton script ?
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2008, 16h54   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : novembre 2007
Messages : 11
Points : 2
Points : 2
désolé petit oublie

alors oui il marche mais j'arrive pas a faire des sortes d'exceptions sur les champs non obligatoire

et je sais pas bien si mes conditions sont bonnes.
-fleo- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h04   #4
Invité de passage
 
Inscription : novembre 2007
Messages : 11
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : novembre 2007
Messages : 11
Points : 2
Points : 2
Voici l'évolution du code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
if ($_POST['e_register_form'] == 'sent') // si le post vient du formulaire ...
{
	$form_error = "";
	$formErr = array();
	while(list($id,$value) = each($_POST)) // pour chaque champ
	{
		// Validation Champs avec espaces
		if ($id=="street"||$id=="street2"||$id=="descr"||$id=="city")
			$regexp = '/^[a-z0-9-\t]+$/i';
		// Validation Champs sans espaces
		if ($id=="nick"||$id=="pass"||$id=="firstname"||$id=="familyname"||
			$id=="phone"||$id=="photo")
			$regexp = '/^[a-z0-9_-]+$/i';
		// Email
		if ($id=="mail")
			$regexp = '#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#';
		// PostalCode
		if ($id=="postal")
			$regexp = '';
 
		/* aucun tests sur : title */
 
		// Validation (champs non vides)
		if (!empty($value) && !preg_match($regexp, $value) ) {
			$formErr[$id] = "<font color=\"red\">Invalid</font>";
			$form_error .= "Field \" ".$id." \" is not valid...<br />";
		}
		// Test des champs non facultatifs
		if (empty($value) && $id != "photo" && $id != "street2" && $id != "url" && $id != "description") {
			$formErr[$id] = "<font color=\"red\">Required</font>";
			$form_error .= "Field '".$id."' is required !<br />";	
		}
	}
 
	if ($_POST[pass] != $_POST[repass])  // Test sur password
		$form_error .= "Warning : Password mismatch !!<br />";
 
	if ($_POST['policy']!= "agree")
		$form_error .= "You must accept user policy ...<br />";
 
	// AU FINAL : si pas d'erreur => insertion bd (enfin tentative d'insertion ..)
	if (!$form_error)
	{
		$user[login] = $_POST[nick];
		$user[password] = md5($_POST[pass]);
		// ...
		if (!db_newUser($user))
			$form_error .= "Error : Insertion DB .... bad";
	}
}
Les problèmes sont les suivants :

-Le champ street, description,.. fait une erreur quand il y a des espaces
-La vérification sur l'email ne fonctionne pas
-On peut mettre lettre et chiffre dans la date de naissance

Après il reste a faire un test quand une image est uploadé mais je vais tenté un truc et vous redirais plus tard

Merci de m'aidé sur les problèmes cités ci-dessus je n'arrive pas a voir mon erreur (mauvaises utilisations des regxp? comment faire??)
-fleo- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h49.


 
 
 
 
Partenaires

Hébergement Web