Traitement de formulaires : vos pratiques

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5160
Inscription: Mer Nov 23, 2005 10:38

Traitement de formulaires : vos pratiques

Message le Jeu Déc 07, 2006 13:36

Bonjour à tous !

J'aimerais savoir comment les membres de WRI qui développent en php (ou en asp d'ailleurs) gèrent les traitements de formulaires, c'est à dire comment gérez-vous la validation des données rentrées par l'utilisateur et leur insertion dans la base :

- Utilisation de classes spécifiques et si oui lesquelles (si ce sont des classes open-source)
- Traitement de formulaire "à la main" en php (c'est à dire sans passer par l'utilisation d'une classe où d'un script spécifique)
- Validation côté client ou serveur
- etc.

Perso je suis beaucoup plus enclin à une validation côté serveur (en PHP donc) qu'une validation en javascript. Mais ma problèmatique repose dans le fait de savoir s'il existe des classes pour faire ce genre de traitement, dans le cas contraire je me mettrais els mains dans le cambouis).

Sir Dipp
WRInaute accro
WRInaute accro
 
Messages: 1025
Inscription: Lun Juil 21, 2003 17:53

Message le Jeu Déc 07, 2006 15:08

Salut,

J'utilise deux vérifications, la première JavaScript relativement simple et efficace (un script de 30 lignes en JS me permet de vérifier tous mes champs obligatoire).

J'ajoute également un noscript avec un champ caché pour savoir si je dois faire une vérification serveur ou pas (pour php) sinon ASP.NET me gère cela tout seul ce qui est super pratique :)

Sinon, pour la vérification serveur j'utilise un système de combinaisons entre les tableaux et le POST pour vérifier les champs dans une boucle assez simplement, comme ça pas besoin de faire des dizaines de if et else pour contrôler champ après champ !

a+
Dernière édition par Sir Dipp le Jeu Déc 07, 2006 15:27, édité 1 fois.


ybet
WRInaute accro
WRInaute accro
 
Messages: 6787
Inscription: Sam Nov 22, 2003 8:37

Message le Jeu Déc 07, 2006 15:22

directement en php (avec des if ....)


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1901
Inscription: Dim Avr 10, 2005 16:56

Message le Jeu Déc 07, 2006 17:20

Sir Dipp a écrit:Salut,

J'utilise deux vérifications, la première JavaScript relativement simple et efficace (un script de 30 lignes en JS me permet de vérifier tous mes champs obligatoire).

J'ajoute également un noscript avec un champ caché pour savoir si je dois faire une vérification serveur ou pas (pour php) sinon ASP.NET me gère cela tout seul ce qui est super pratique :)

Sinon, pour la vérification serveur j'utilise un système de combinaisons entre les tableaux et le POST pour vérifier les champs dans une boucle assez simplement, comme ça pas besoin de faire des dizaines de if et else pour contrôler champ après champ !

a+


Je te conseille de toujours faire la vérification PHP !!

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

Message le Jeu Déc 07, 2006 18:16

je plus gros problème est d'empêcher la resoumission par refresh une fois le formulaire validé.

perso je fais

Code: Tout sélectionner
<?php
vérif de la validité des champs
si ok {
traitement du formuaire
redirection page ok
}
?>

formulaire html qui pointe sur la même page


l'avantage de la méthode, c'est
- pas de revalidation lors d'un refresh
- formuaire pré-rempli si lors de la première validation les champs ne sont pas validés


OTP
Modérateur
Modérateur
 
Messages: 12908
Inscription: Ven Déc 16, 2005 22:41

Message le Jeu Déc 07, 2006 18:22

ybet a écrit:directement en php (avec des if ....)


Même chose
Ce me suffit largement !


ybet
WRInaute accro
WRInaute accro
 
Messages: 6787
Inscription: Sam Nov 22, 2003 8:37

Message le Jeu Déc 07, 2006 19:33

jeroen a écrit:je plus gros problème est d'empêcher la resoumission par refresh une fois le formulaire validé.

perso je fais

Code: Tout sélectionner
<?php
vérif de la validité des champs
si ok {
traitement du formuaire
redirection page ok
}
?>

[b]formulaire html qui pointe sur la même page[/b]



jamais essayé en auto-invocant?

Pour le refresh: die('<meta http-equiv="refresh" content="3; URL=page d'accueil">');

plus aucon problèmes


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1901
Inscription: Dim Avr 10, 2005 16:56

Message le Jeu Déc 07, 2006 19:45

Onthisplanet a écrit:
ybet a écrit:directement en php (avec des if ....)


Même chose
Ce me suffit largement !



Le Javascript permet de gagner un traitement machine coté serveur !
Ca évite de recharger la page aussi...

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

Message le Jeu Déc 07, 2006 19:50

ybet a écrit:jamais essayé en auto-invocant?

Pour le refresh: die('<meta http-equiv="refresh" content="3; URL=page d'accueil">');

plus aucon problèmes


Comprends pas ?


ybet
WRInaute accro
WRInaute accro
 
Messages: 6787
Inscription: Sam Nov 22, 2003 8:37

Message le Jeu Déc 07, 2006 20:13

l'autoinvocant t'évite 2 pages (le formulaire en HTML)

Code: Tout sélectionner
if (isset($HTTP_POST_VARS['B1']))
{
// teste les valeurs.
$nom=trim(addslashes($HTTP_POST_VARS['nom']));
$mail=trim(addslashes($HTTP_POST_VARS['mail']));
$tableau=array();
$tableau=Explode("@",$mail,2);
echo $tableau[0];
if ($nom=="" || $nom=="Nom")
{
   echo "Veuillez rentrer un nom";
}elseif ($mail==""){
   echo "Rentrez une adresse mail";
}elseif (!isset($tableau[1])) {
   echo"Rentrez une adresse valide";
}else{
  // envoi dans la base de donnée ou vial la fonction mail()
  //die ();
}

// formulaire
$form="<form method=\"POST\">
  <p>Nom: <input type=\"text\" name=\"nom\" size=\"20\" value=\"Nom\"></p>
  <p>Votre adresse mail: <input type=\"text\" name=\"mail\" size=\"30\" value=\"Votre adresse mail\"></p>
  <p><input type=\"submit\" value=\"Envoyer\" name=\"B1\"></p>
</form>";
echo $form;

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

Message le Jeu Déc 07, 2006 20:49

oui, c'est bien ce que je fais :wink:

formulaire html qui pointe sur la même page


par contre pourquoi faire un die et un redirect en javascript, alors que tu peux faire un redirect directement via php ??


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Ven Déc 08, 2006 1:51

parce que le redirect php ne marche pas toujours. (mystère et boule de gomme)
Au sujet du formulaire, je passe toujours un coup de mysql_real_escape_string() ou de intval() avant de mettre quelque chose dans ma base.
Mon problème après, c\'est de virer les caractères d\'échappement qui s\'invitent tous seuls dans le texte inséré en base. \"Il faut ce qu'il faut\", comme dirait l\'autre.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Déc 08, 2006 3:03

mysql_real_escape_string()


php est un tissus de bug

je pense qu'il est preferable de créer ses propres fonctions

rog

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

Message le Ven Déc 08, 2006 6:39

Dj_Apx a écrit:parce que le redirect php ne marche pas toujours. (mystère et boule de gomme)

Ca c'est super pertinent :wink:
Il y a toujours une explication. Donne un exemple pour voir...


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Ven Déc 08, 2006 17:39

Après expérimentation une cause possible du mystère est que si l'on envoie des données après le header, les navigateurs ne font pas forcément la redirection. Pour la boule de gomme, je n'ai pas encore trouvé :)

Traitement de formulaires : vos pratiques

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités