problème formulaire

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 : problème formulaire

Re: problème formulaire

par Shadowwera » 28 avr. 2021, 15:08

Salut

L'attribut HTML required permet de tester en effet si un champs et vide lors de la soumission, mais attention cela reste facilement modifiable par l'utilisateur !! Il est INDISPENSABLE de toujours vérifier les informations soumis par un utilisateur ! (CF. Never Trust user input )

Pour une meilleur lisibilité, utilisez la balise [c0de][/c0de] ou [.PHP][/PHP]( avec un o à la place du 0 ou sans le . ) pour visualiser le code comme ceci :
try {
  // On se connecte à MySQL
  $bdd = new PDO('mysql:host=localhost;dbname=formulaire;charset=utf8', 'root', 'root');
  echo "Formulaire transmis";
} catch(Exception $e) {
  // En cas d'erreur, on affiche un message et on arrête tout
  die('Erreur : '.$e->getMessage());
}

Re: problème formulaire

par chaher23 » 28 avr. 2021, 11:49

merci beaucoup je ne connaissais pas required

Re: problème formulaire

par Figuedi » 27 avr. 2021, 08:05

Question bête surement mais pourquoi ne pas mettre un required a chaque input comme ça tu n'a pas besoin de tester si il est vide
<label for="name">Nom :</label>
<input type="text" id="name" name="nom" required>
</div>

Re: problème formulaire

par chaher23 » 26 avr. 2021, 23:34

voici le formulaire

<form action="traitement.php" method="post">
<div>
<label for="name">Nom :</label>
<input type="text" id="name" name="nom">
</div>
<div>
<label for="surname">Prénom :</label>
<input type="text" id="prenom" name="prenom">
</div>
<div>
<label for="tel">Téléphone :</label>
<input type="text" id="tel" name="tel">
</div>
<div>
<label for="mail">E-mail :</label>
<input type="email" id="mail" name="mail">
</div>
<div>
<label for="msg">Message :</label>
<textarea id="msg" name="msg"></textarea>
</div>
<div class="button">
<button type="submit">Envoyer le message</button>
</div>

</form>

Re: problème formulaire

par or 1 » 26 avr. 2021, 23:04

sans le formulaire html, impossible de trouver le problème.

si en remplaçant :
if (!empty ($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['tel']) && !empty($_POST['mail']) && !empty($_POST['msg']) && strlen($_POST['nom'])>1 && strlen($_POST['prenom'])>1)
par
if(1)
cela exécute la requête, il faut remettre petit à petit les tests pour trouver ce qui cloche.

Re: problème formulaire

par chaher23 » 26 avr. 2021, 22:58

je viens de créer le compte afin de recevoir les éventuels réponses =)

problème formulaire

par chaher23 » 26 avr. 2021, 22:55

Bonjour,

Je suis étudiant dans le code.

Jusqu'à present mon formulaire fonctionnait bien.

Aujourd'hui je fais un test. Lorsque tous les champs sont rempli, la page traitement doit afficher "Formulaire transmis".
S'il n'est pas rempli correctement, la page doit afficher "Veuillez remplir tous les champs".

Quel que soit ce que je remplis ou pas j'ai maintenant "Formulaire transmis Veuillez remplir tous les champs".

Pouvez vous m'aider?

Le code

<?php

try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=formulaire;charset=utf8', 'root', 'root');
echo "Formulaire transmis";

}

catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

if (!empty ($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['tel']) && !empty($_POST['mail']) && !empty($_POST['msg']) && strlen($_POST['nom'])>1 && strlen($_POST['prenom'])>1)
{
// injection balise html
$_POST['nom']=strip_tags($_POST['nom']);
$_POST['prenom']=strip_tags($_POST['prenom']);
$_POST['tel']=strip_tags($_POST['tel']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['msg']=strip_tags($_POST['msg']);

// l'insertion pour le formulaire
$req=$bdd->prepare('INSERT INTO Données(nom,prenom,tel,mail,msg) VALUES(:nom,:prenom,:tel,:mail,:msg)');

// l'execuxion du formulaire
$req->execute(array(

'nom'=>$_POST['nom'],
'prenom'=>$_POST['prenom'],
'tel'=>$_POST['tel'],
'mail'=>$_POST['mail'],
'msg'=>$_POST['msg'],

));

}

//affichage de l'erreur

else {
echo "Veuillez remplir les champs";

}



?>