Valider un formulaire pour... créatif !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Valider un formulaire pour... créatif !

par Cyrano » 16 sept. 2006, 19:22

Pour t'inspirer, regarde ce sujet dans la FAQ, le formulaire fonctionne sur une page unique au lieu de deux, mais le principe est sensiblement le même.

par Aureusms » 16 sept. 2006, 19:03

Tu peux faire dans ta page b:

if (!isset($_POST["nom"] or $_POST["nom"] == '')) {
$_SESSION["erreur"] = pas de nom rentré;
die(header("location=page a"));
}

comme çà avec tes variables de session tu peux mettre un message dans ta page a sans que b soit lancé (fonction die). Deux contrainte : session_start() obligatoire (sinon pas de variable de session et les header doivent être lancé avant toute sortie HTML.

Valider un formulaire pour... créatif !

par Romarick » 16 sept. 2006, 18:46

Bonjour,

Je travaille à la réalisation d'un formulaire.

Sur la page "a", le visiteur complète les champs. La page "b" récapitule la saisie et affiche les erreurs éventuelles.

Pour afficher les erreurs éventuelles, j'ai codé des fonctions. Ainsi, par exemple, pour vérifier que le prénom est complété, j'utilise la syntaxe suivante :
function prenomvide()
{
if(empty($_SESSION['prenom']))
echo erreur_prenom_vide;
}
Pour un nom vide, même traitement :
function nomvide()
{
if(empty($_SESSION['nom']))
echo erreur_nom_vide;
}
Ces fonctions sont incluses dans un fichier externe.

Mon souci est le suivant :
- je voudrai bloquer la page "b" tant que le visiteur n'a pas résolu les problèmes signalés.

Ainsi ai-je pensé utiliser un syntaxe comme (je vais l'écrire en français) "si le prénom est vide... sinon si le nom est vide..., rester sur la page, sinon rediriger" dans une deuxième page externe.

Le souci avec cette option est que ça m'oblige à ressaisir mes fonctions en imbriquant des elseif. De plus, je ne suis pas sûr qu'il soit intelligent de demander au serveur deux fois le même travail !

Pourrai-je arriver plus simplement au même résultat, puisque mes fonctions ont déjà analysé et notifié les erreurs.

Merci pour votre aide, en espérant avoir été clair.

Cordialement,

Romarick[/php]