Formulaire d'inscription

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 : Formulaire d'inscription

Re: Formulaire d'inscription

par JokerXgame78 » 21 févr. 2020, 16:42

Oui une class css est tout à fait indiquée. Tu peux par exemple mettre ton message dans un p ou un span sur lequel tu vas mettre une class msg-success ou msg-error selon le cas et sur laquelle tu vas définir les styles que tu veux. Tu peux faire ça comme un cochon aussi avec un attribut style, tout dépend si tu penses réutiliser la class ou non et si t'as envi de faire au plus propre ou non.
Merci pour l'info :D

Re: Formulaire d'inscription

par Saian » 21 févr. 2020, 16:25

Oui une class css est tout à fait indiquée. Tu peux par exemple mettre ton message dans un p ou un span sur lequel tu vas mettre une class msg-success ou msg-error selon le cas et sur laquelle tu vas définir les styles que tu veux. Tu peux faire ça comme un cochon aussi avec un attribut style, tout dépend si tu penses réutiliser la class ou non et si t'as envi de faire au plus propre ou non.

Re: Formulaire d'inscription

par JokerXgame78 » 21 févr. 2020, 16:22


Initialiser une variable $hasError à false. S'il y a une erreur, en plus de l'afficher tu passes $hasError à true et tu n'affiches le dernier echo que s'il n'y a pas d'erreur. if (!$hasError)
Merci de ton aide ! J' ai modifié mon code comme ceci et tout fonctionne comme je le souhaite :D :

<?php

if (isset($_POST["submit"])) {

$hasError1 = (empty($_POST["Nom"]) or empty($_POST["Prenom"]) or empty($_POST["email"]) or empty($_POST["passeword"]) or empty($_POST["repeatpasseword"]) );

$hasError2 = (strlen($_POST["passeword"])<=6);

$hasError3 = (isset($_POST["passeword"]))!==(isset($_POST["repeatpasseword"]));

if ($hasError1) {

echo "Veuillez remplir tous les champs !";

}

if ($hasError2) {

echo "Le mot-de-passe est trop court !";

}

if ($hasError3) {

echo "Les mots-de-passe ne sont pas identiques !";

}


if ((!$hasError1) and (!$hasError2) and (!$hasError3)) {

echo "Connecté(e) !";

}

}

?>

J'ai une question. Hier tu m'avais aidé à corriger mon script php pour faire un random number. Je souhaiterai modifier le echo qui disait gagné ou perdu. Dois-je lui donner une class pour le modifier en css ? Comment peut on modifier l'esthétique des echo ?

Re: Formulaire d'inscription

par Saian » 21 févr. 2020, 15:50

Alors y a les fonctions filter_* de php pour valider des variables mais ne m'en étant jamais servi j'aurai du mal à t'aiguiller. Peut être que ça peut permettre de tout valider ou invalider d'un coup, je ne sais pas.

Ce que tu peux faire sinon, c'est au préalable initialiser une variable $hasError à false. S'il y a une erreur, en plus de l'afficher tu passes $hasError à true et tu n'affiches le dernier echo que s'il n'y a pas d'erreur. if (!$hasError)

EDIT je ferais probablement quelque chose dans le genre :
<?php
session_start();

if (isset($_POST["submit"])) {
  // validation du formulaire
  $errors = [];

  if (empty($_POST["Nom"]) or empty($_POST["Prenom"]) or empty($_POST["email"]) or empty($_POST["passeword"]) or empty($_POST["repeatpasseword"]))
    $errors[] = "Veuillez remplir tous les champs !";

  if (strlen($_POST["passeword"])<=6)
    $errors[] = "Le mot-de-passe est trop court !";

  if ((isset($_POST["passeword"]))!==(isset($_POST["repeatpasseword"])))
    $errors[] = "Les mots-de-passe ne sont pas identiques !";

  // si pas d'erreur
  if (!count($errors)) {
    // enregistre l'utilisateur (probablement un insert en base de données)
    // ...

    // connecte l'utilisateur
    // $_SESSION['user_id'] = $user->id;

    // redirige l'utilisateur vers la page d'accueil de l'utilisateur connecté
    // le header permet d'éviter la réinscription de l'utilisateur s'il décide de rafraichir la page
    header('Location: /mon-compte/accueil.html');
    exit();
  }
}
?>
<div id="formulaireid">

  <?php if (isset($errors) && count($errors)): ?>
    <ul>
    <?php foreach ($errors as $error): ?>
      <li><?php echo $error; ?></li>
    <?php endforeach; ?>
    </ul>
  <?php endif; ?>

  <form method="post" action="identification.php">
    <p>Nom</p>
    <input type="text" name="Nom" value="<?php echo $_POST['Nom'] ?? ''; ?>"/>
    <p>Prenom</p>
    <input type="text" name="Prenom" value="<?php echo $_POST['Prenom'] ?? ''; ?>"/>
    <p>email</p>
    <input type="email" name="email" value="<?php echo $_POST['email'] ?? ''; ?>"/>
    <p>Passeword</p>
    <input type="passeword" name="passeword">
    <p>Répetez votre mot-de-passe</p>
    <input type="passeword" name="repeatpasseword"><br><br>
    <input type="submit" name="submit" value="Valider">
  </form>

</div>

Re: Formulaire d'inscription

par JokerXgame78 » 21 févr. 2020, 14:57

Ton else est le else du if ((isset($_POST["passeword"]))!==(isset($_POST["repeatpasseword"]))) { donc si les passwords sont identiques tu auras toujours le echo Connecté(e) !
Merci pour ton aide !
comment pourrai-je faire pour que le else intervienne que si les trois if sont faux ?
(J ai fais plusieurs recherches et essayé par moi même en vain :-()

Re: Formulaire d'inscription

par Saian » 21 févr. 2020, 14:36

Ton else est le else du if ((isset($_POST["passeword"]))!==(isset($_POST["repeatpasseword"]))) { donc si les passwords sont identiques tu auras toujours le echo Connecté(e) !

Formulaire d'inscription

par JokerXgame78 » 21 févr. 2020, 14:30

Bonjour à tous,

Contexte: Pour le cours de sciences numériques, je dois coder un site en html/css. J ai décidé de créer un site e commerce. Sur la page d'inscription, j ai écrit un petit script php.

Il devrait permettre d'indiquer que tous les champs ne sont pas remplis dans le cas échéant, que les mots de passes sont trop courts ou ne sont pas identiques, et si tout est correct, il devrait marquer "Connecté(e) !".

Tout fonctionne à un détail près: quoi qu'il arrive, même si un des champs n'est pas rempli ou même si il y a une autre erreur, ça marque "Connecté(e) !" alors que cet echo est censé s'afficher seulement si tout est bon.

J'ai essayé de comprendre la cause du problème en vain. Quelqu'un peut il m'aider ? Voici le script html et php concerné:

<div id="formulaireid">

<form method="post" action="identification.php">
<p>Nom</p>
<input type="text" name="Nom">
<p>Prenom</p>
<input type="text" name="Prenom">
<p>email</p>
<input type="email" name="email">
<p>Passeword</p>
<input type="passeword" name="passeword">
<p>Répetez votre mot-de-passe</p>
<input type="passeword" name="repeatpasseword"><br><br>
<input type="submit" name="submit" value="Valider">
</form>

</div>

</body>
</html>

<?php
if (isset($_POST["submit"])) {

if (empty($_POST["Nom"]) or empty($_POST["Prenom"]) or empty($_POST["email"]) or empty($_POST["passeword"]) or empty($_POST["repeatpasseword"]) ) {
echo "Veuillez remplir tous les champs !";
}


if (strlen($_POST["passeword"])<=6) {
echo "Le mot-de-passe est trop court !";

}

if ((isset($_POST["passeword"]))!==(isset($_POST["repeatpasseword"]))) {
echo "Les mots-de-passe ne sont pas identiques !";
}

else {

echo "Connecté(e) !";

}

}

?>

PS: La moindre remarque / le moindre conseil est bienvenue !