formulaire cvt + fonction vérifier

bonjour,
je cherche depuis plusieurs semaines à améliorer un formulaire cvt assez basique et je souhaiterai pouvoir ajouter une vérification sur deux champs. le formulaire se compose comme ceci :
un champ nom
un champ prénom
un champ courriel
un champ sujet
un champ message

première interrogation, sur les champs nom et prénom je souhaiterai faire une vérification qu'il n'y ai pas de caractères numériques 0-9, comment faire ?

deuxième question, est-il possible que ce formulaire soit dépliable soit par survol du pointeur ou réception focus par tabulation, accessibilité oblige ?

parmi vous quelques experts sauraient comment faire ?

cordialement

--
Signalez vos spams d'un simple clic. www.signal-spam.fr
<https://www.signal-spam.fr/>

bobof <bof-bof@sfr.fr> wrote:

bonjour,

Bonjour

je cherche depuis plusieurs semaines à améliorer un formulaire cvt assez
basique et je souhaiterai pouvoir ajouter une vérification sur deux
champs. le formulaire se compose comme ceci :
un champ nom
un champ prénom
un champ courriel
un champ sujet
un champ message

première interrogation, sur les champs nom et prénom je souhaiterai
faire une vérification qu'il n'y ai pas de caractères numériques 0-9,
comment faire ?

if (preg_match('`\D`',_request('nom')) { $erreurs['nom'] =
'message_erreur';}

\D = tout caractère qui n'est pas un caractère décimal

deuxième question, est-il possible que ce formulaire soit dépliable soit
par survol du pointeur ou réception focus par tabulation, accessibilité
oblige ?

Voir du coté de jquery (lire un peu la doc)
ou pour commencer
http://www.jquery.info/spip.php?article21

$(document).ready(function() {
        $('#mon_formulaire').hide();
        $('#mon_bouton').click(function(){
                $('#mon_formulaire').toggle();
        });
});
en supposant que tu cliques sur l'élément d'id mon_bouton pour faire
apparaitre / disparaitre ton formulaire d'id mon_formulaire

pour le survol remplacer click par hover
http://api.jquery.com/category/events/

parmi vous quelques experts sauraient comment faire ?

Je te conseille vraiment de lire "danse avec jquery" pour commencer. Une
fois qu'on y a goutté on ne peut plus s'en passer :-))

cordialement

de même

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

bonjour,

Dominique a écrit :

bobof  wrote:

  
bonjour,
    
Bonjour

  
je cherche depuis plusieurs semaines à améliorer un formulaire cvt assez
basique et je souhaiterai pouvoir ajouter une vérification sur deux 
champs. le formulaire se compose comme ceci :
un champ nom
un champ prénom
un champ courriel
un champ sujet
un champ message

première interrogation, sur les champs nom et prénom je souhaiterai 
faire une vérification qu'il n'y ai pas de caractères numériques 0-9,
comment faire ?
    

if (preg_match('`\D`',_request('nom')) { $erreurs['nom'] =
'message_erreur';}

\D = tout caractère qui n'est pas un caractère décimal

  

j’arrive pas à mettre ça en place, ci joint la fonction charger et vérifier que j’utilise + celle de nospam :

bobof <bof-bof@sfr.fr> wrote:

j'arrive pas à mettre ça en place, ci joint la fonction charger et
vérifier que j'utilise + celle de nospam :
-------
    if (preg_match('`\D`',_request('nom'))) { $erreurs['nom'] = 'pas de
num&eacutero';}
-----
la fonction donnée est inopérante, si je saisie 0 , 1, 136589 dans le
champ nom c'est vu comme valide, .... ???
-----

désolé c'est un d minuscule qu'il faut mettre :slight_smile:

http://www.php.net/manual/fr/regexp.reference.backslash.php

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

bonjour,

Dominique a écrit :

bobof  wrote:

  
j'arrive pas à mettre ça en place, ci joint la fonction charger et 
vérifier que j'utilise + celle de nospam :
-------
    if (preg_match('`\D`',_request('nom'))) { $erreurs['nom'] = 'pas de
num&eacutero';}       
-----
la fonction donnée est inopérante, si je saisie 0 , 1, 136589 dans le
champ nom c'est vu comme valide, .... ???
-----
    

désolé c'est un d minuscule qu'il faut mettre :-)
  

ok ! merci dominique, c’est super sympa et ça fonctionne nickel,

  

HA! oui ! pas vu celle là, je l’ai mise directement en marque page cette url, les regex et moi ça fait 2 merci beaucoup cordialement et bonne soirée.

Le 20/03/10 20:41, bobof a écrit :

http://www.php.net/manual/fr/regexp.reference.backslash.php

HA! oui ! pas vu celle là, je l'ai mise directement en marque page cette
url, les regex et moi ça fait 2 :slight_smile:

si je peux me permettre, attention aux versions françaises de ces
pages sur les regexp.

certaines traductions sont parfois erronées et il est préférable
de (au moins) vérifier sur les pages en anglais.

exemple :

   <cite>
   Par exemple, avec la chaîne "le prince charmant", utilisé avec le
   masque Le (( ?roi|prince) (soleil|charmant)) les chaînes capturées
   seront "prince charmant"...
   </cite>

   <cite>
   For example, if the string "the white queen" is matched against the
   pattern the ((?:red|white) (king|queen)) the captured substrings are
   "white queen"
   </cite>

ici, c'est bien ((?: ... qu'il faut utiliser (les 2 points)

bonjour,
ouf ! là je suis largué denisb, merci beaucoup, tes explication sont toujours constructives, mais là j’ai besoin de recul.
cordialement

denisb a écrit :

bobof <bof-bof@sfr.fr> wrote:

function formulaires_contact_verifier_dist(){
    $erreurs = array();
    // verifier que les champs obligatoires sont bien la :
    foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
        if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ
obligatoire';
    if (preg_match('`\D`',_request('nom'))) { $erreurs['nom'] = 'pas de
num&eacutero';}
    // verifier que si un email a été saisi, il est bien valide :
    include_spip('inc/filtres');
    if (_request('email') AND !email_valide(_request('email')))
        $erreurs['email'] = 'Cette adresse email n\'est pas valide';
    // verification par nospam
    include_spip('inc/texte');
    // si nospam est present on traite les spams
    if (include_spip('inc/nospam')) {
        $caracteres = compter_caracteres_utiles(_request('texte'));
    // moins de 10 caracteres sans les liens = spam !
        if ($caracteres < 10){$erreurs['texte'] = 'Votre texte doit
contenir 10 caract&egrave;res minimum.';}
    // on analyse le sujet
        $infos_sujet = analyser_spams(_request('sujet'));
    // si un lien dans le sujet = spam !
        if ($infos_sujet['nombre_liens'] > 0)$erreurs['sujet'] =
'Hyperlien interdit dans le sujet';
    // on analyse le texte
        $infos_texte = analyser_spams(_request('texte'));
        if ($infos_texte['nombre_liens'] > 0) {
    // si un lien a un titre de moins de 3 caracteres = spam !
            if ($infos_texte['caracteres_texte_lien_min'] < 3) {
            $erreurs['texte'] = 'Votre texte contient un hyperlien avec
un titre non conforme.';
            }
    // si le texte contient plus de trois lien = spam !
            if ($infos_texte['nombre_liens'] >= 3)
            $erreurs['texte'] = 'Deux hyperliens maximum dans votre texte';
        }
    }
    if (count($erreurs))
        $erreurs['message_erreur'] = 'Votre saisie contient des erreurs !';
    return $erreurs;
}

C'est donc un d minuscule mais il me semble que ton script n'est pas
très optimisé et que tu fais 5 fois les mêmes tests puisque ceux sur le
champ "nom" et la validation de l'email sont dans ta boucle foreach...

le mieux serait
ta boucle foreach si tu y tiens

foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
        if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ
obligatoire';
} // fin foreach

if (!count($erreurs)) {

// tous les autres tests en supposant que les champs sont non vides
// donc if (_request('email') AND !email_valide(_request('email')))
// devient if (!email_valide(_request('email')))

}
et if ...
} // fin forction verifier

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

Dominique <dwojylac@free.fr> wrote:

C'est donc un d minuscule mais il me semble que ton script n'est pas
très optimisé et que tu fais 5 fois les mêmes tests puisque ceux sur le
champ "nom" et la validation de l'email sont dans ta boucle foreach...

le mieux serait
ta boucle foreach si tu y tiens

foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
        if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ
obligatoire';
} // fin foreach

if (!count($erreurs)) {

// tous les autres tests en supposant que les champs sont non vides
// donc if (_request('email') AND !email_valide(_request('email')))
// devient if (!email_valide(_request('email')))

}
et if ...
} // fin forction verifier

au temps pour moi, désolé du bruit, avec les citations j'avais pas vu
qu'il n'y avait pas de { après ton foreach...

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

bonjour,
est-il possible de simplifier ceci ?

function formulaires_contact_verifier_dist(){
  $erreurs = array();
  // verifier que les champs obligatoires sont bien la :
  foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
    if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ obligatoire';

// cette partie du code
if (preg_match('`\d`',_request('nom'))) { $erreurs['nom'] = 'Pas de chiffre dans le nom';}
if (preg_match('`\d`',_request('prenom'))) { $erreurs['prenom'] = 'Pas de chiffre dans le pr&eacute;nom';}

-------
et également pour la partie du plugin nospam ?

// on analyse le nom prenom sujet
$infos_nom = analyser_spams(_request('nom'));
$infos_prenom = analyser_spams(_request('prenom'));
$infos_sujet = analyser_spams(_request('sujet'));
// si un lien dans le nom prenom sujet = spam !
if ($infos_nom['nombre_liens'] > 0)$erreurs['nom'] = 'Hyperlien interdit dans le nom';
if ($infos_prenom['nombre_liens'] > 0)$erreurs['prenom'] = 'Hyperlien interdit dans le pr&eacute;nom';
if ($infos_sujet['nombre_liens'] > 0)$erreurs['sujet'] = 'Hyperlien interdit dans le sujet';

-----
la fonction vérifier() intégrale :
-----
function formulaires_contact_verifier_dist(){
$erreurs = array();
// verifier que les champs obligatoires sont bien la :
foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ obligatoire';
if (preg_match('`\d`',_request('nom'))) { $erreurs['nom'] = 'Pas de chiffre dans le nom';}
if (preg_match('`\d`',_request('prenom'))) { $erreurs['prenom'] = 'Pas de chiffre dans le pr&eacute;nom';}
// verifier que si un email a été saisi, il est bien valide :
include_spip('inc/filtres');
if (_request('email') AND !email_valide(_request('email')))
$erreurs['email'] = 'Cette adresse email n\'est pas valide';
// verification par nospam
include_spip('inc/texte');
// si nospam est present on traite les spams
if (include_spip('inc/nospam')) {
$caracteres = compter_caracteres_utiles(_request('texte'));
// moins de 10 caracteres sans les liens = spam !
if ($caracteres < 10){$erreurs['texte'] = 'Votre texte doit contenir 10 caract&egrave;res minimum.';}
// on analyse le nom prenom sujet
$infos_nom = analyser_spams(_request('nom'));
$infos_prenom = analyser_spams(_request('prenom'));
$infos_sujet = analyser_spams(_request('sujet'));
// si un lien dans le nom prenom sujet = spam !
if ($infos_nom['nombre_liens'] > 0)$erreurs['nom'] = 'Hyperlien interdit dans le nom';
if ($infos_prenom['nombre_liens'] > 0)$erreurs['prenom'] = 'Hyperlien interdit dans le pr&eacute;nom';
if ($infos_sujet['nombre_liens'] > 0)$erreurs['sujet'] = 'Hyperlien interdit dans le sujet';
// on analyse le texte
$infos_texte = analyser_spams(_request('texte'));
if ($infos_texte['nombre_liens'] > 0) {
// si un lien a un titre de moins de 3 caracteres = spam !
if ($infos_texte['caracteres_texte_lien_min'] < 3) {
$erreurs['texte'] = 'Votre texte contient un hyperlien avec un titre non conforme.';
}
// si le texte contient plus de trois lien = spam !
if ($infos_texte['nombre_liens'] >= 3)
$erreurs['texte'] = 'Deux hyperliens maximum dans votre texte';
}
if (count($erreurs))
$erreurs['message_erreur'] = 'Votre saisie contient des erreurs !';
return $erreurs;
}
--------

cordialement

Dominique a écrit :

Dominique <dwojylac@free.fr> wrote:

C'est donc un d minuscule mais il me semble que ton script n'est pas
très optimisé et que tu fais 5 fois les mêmes tests puisque ceux sur le
champ "nom" et la validation de l'email sont dans ta boucle foreach...

le mieux serait
ta boucle foreach si tu y tiens

foreach(array('nom','prenom','email','sujet','texte') as $obligatoire)
        if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Champ obligatoire';
} // fin foreach

if (!count($erreurs)) {

// tous les autres tests en supposant que les champs sont non vides
// donc if (_request('email') AND !email_valide(_request('email')))
// devient if (!email_valide(_request('email')))

}
et if ...
} // fin forction verifier

au temps pour moi, désolé du bruit, avec les citations j'avais pas vu
qu'il n'y avait pas de { après ton foreach...

--
Signalez vos spams d'un simple clic. www.signal-spam.fr
<https://www.signal-spam.fr/&gt;