Problème tout simple sur un formulaire tout simple...

WRInaute discret
Bonjour à tous,
Imaginons une page "inscription.php" sur laquelle le visiteur doit entrer quelques informations basiques (nom, prénom, tel et email). Il n'y a rien d'autre sur cette page.
Si le visiteur remplit bien tous les champs, il est redirigé vers une deuxième page, "inscrit.php" par exemple, sur laquelle il a accès à différentes informations.
Si par contre certains champs sont mal ou pas renseignés, je ne veux pas qu'il soit redirigé vers "inscrit.php" mais qu'il ait un message d'erreur, sur cette même page "inscription.php"
J'ai donc mis en place toutes les vérifications nécessaires, genre
Code:
if ($prenom == '')
        {
            print "<li>Vous n'avez pas précisé votre prénom </li>\n";
        }
qu'il faut (avec une expression régulière pour le traitement de l'adresse email et du numéro de téléphone).
Donc si la personne remplit bien son formulaire, on arrive parfaitement sur la page "inscrit.php"

Sur ce formulaire, j'ai utilisé le code
Code:
<form action="./inscrit.php" " method="post">

Mon problème vient donc sans doute de là, de ce "form action". Car si le gars ne remplit pas bien le formulaire, il arrive quand même à la page "inscrit.php" alors qu'il devrait recevoir le(s) message(s) d'erreur ci dessus, avec son formulaire à remplir à nouveau.

J'ai utilisé la formule
Code:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
dans un autre formulaire, donc je vois bien comment faire pour retourner le formulaire avec les messages d'erreur en restant sur la même page mais mon problème c'est que je ne vois pas comment formuler le "si t'as bien rempli, tu vas sur cette page (inscrit.php), or else tu recommences ton formulaire...

Quelqu'un pourrait il me donner une indication?
Merci d'avance!
A.
PS: tout ça est encore pour le site de cette expédition maritime et à vocation humanitaire dont je m'occupe bénévolement... avec mon maigre savoir...
 
WRInaute discret
A priori, ça semble tout simple.

Je fait comme s'il n'y avait qu'une seule variable sur ton formulaire inscription.php :

Code:
if(isset($_REQUEST['email'])){
  if(!preg_match('/[a-z\.-]+@[a-z\.-]+/', $_REQUEST['email'])){
  	/* Adresse email incorrecte */
    $valid = 0;
  }else{
  	/* Adresse email OK */
    $valid = 1;
  }
}else{
  $valid = -1;
}

if($valid < 1){
    /* Le formulaire est va être affiché */
    if($valid == 0){
      echo 'Des erreurs ont été détectées, merci de corriger.<br/>';
    }
    echo 'Le formulaire: <form ...><input...>';
}else{
    /* Redirection HTTP */
    header('Location: inscrit.php');
}
 
WRInaute discret
Hello Kalex,
Je vais regarder ça demain, là c'est samedi soir, c'est l'heure de reposer les neurones.
A première vu ton code devrait me tirer d'affaire, merci!!
A.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut