[RESOLU] Validation email après usage Filtres

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 : [RESOLU] Validation email après usage Filtres

Re: Validation email après usage Filtres

par bob56@ » 01 déc. 2016, 01:08

Bonjour :D

OK après de multiples essais ce script fonctionne avec erreur message si mauvais email et rien n'est enregistré dans la base :lol:

Merci de votre aide
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
  // Email =============================================================================================== 
        $email = ($_POST['email']); 
   if(filter_var($email, FILTER_VALIDATE_EMAIL) === false)
          echo "<br><a class='champs_3'>  Adresse Email non valide !</a><br>" ;
  else {

 
 
        $telephone =($_POST['telephone']);
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $date_post = htmlentities($_POST['date_post'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
    // c'est ici qu'on vérifie si au moins un champ est vide avec OR :
    if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['age']) OR empty($_POST['adresse'])  OR empty($_POST['telephone']) OR empty($_POST['url']) OR empty($_POST['titre']) OR empty($_POST['message']))
    {
        echo '<p><a class="champs_1" >Compléter les champs suivants :</a></p><ul>';	
        if(empty($_POST['nom']))
         {
         	 echo '<br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '<br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '<br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '<br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '<br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '<br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '<br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '<br><li class="champs_2" >Message</li>';
        }
    echo  '</ul>';
}
else // si les variables $_POST du formulaire n'existent pas, le code ci-dessus ne s'exécute pas
{
     // ici, ce que tu veux éventuellement afficher
echo '<p><a class="champs_1" >Tous les champs sont remplis!</a></p><ul>';	
// Aucun champ n'est vide, on peut enregistrer dans la table
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )";
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
}
}   // fin else mail  
mysqli_close($conn);
?>

Re: Validation email après usage Filtres

par Spols » 30 nov. 2016, 09:26

il vaut mieux éviter de remplir ta bdd que de supprimer après coup ce qu'il y a en trop.

@rthur te donnait la solution. il te faut ajouter une condition à ton else qui enregistre dans ta base.
remplace ton else par un elseif avec la même condition de validation de l'email

Re: Validation email après usage Filtres

par bob56@ » 30 nov. 2016, 00:37

j'ai résolu ce problème avec:

$bdd = "DELETE FROM infos_tbl ORDER BY id DESC LIMIT 1";

Maintenant y avait-il une solution plus simple ?? j'attend un avis avant de mettre en résolu

Re: Validation email après usage Filtres

par bob56@ » 29 nov. 2016, 23:49

Je crois que j'ai trouvé une solution pour mon problème (suppression dernier post lors nouvelle validation) , il me faut donc supprimer : exemple 15 étant le dernier enregistrement.

J'ai fais un essai avec un 15 çà roule >> $bdd = "DELETE FROM infos_tbl WHERE `id`= 15";

Seulement il me faut remplacer X par quelque chose comme çà >> $bdd = "DELETE * FROM `infos_tbl` WHERE ID = '$id'";




if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
     // echo "<br><a class='champs_3'>$email Est une adresse e-mail valide!</a><br>" ;
      echo '<p><a class="champs_1" >Super tous les champs sont bien remplis! :</a></p><ul>';
    } else {
   // $email =($_POST['email']);
    echo "<br><a class='champs_3'> $email : adresse non valide !</a><br>" ;
    
                                // WHERE `id`=1;
    $bdd = "DELETE FROM infos_tbl WHERE `id`= [b]15[/b]";
    
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}

Re: Validation email après usage Filtres

par bob56@ » 29 nov. 2016, 19:34

me revoilà :)
bon les messages sont ok.
Le seul soucis maintenant, l'inscription se fait dans la bdd lors d'une erreur rédaction email ?

je pense que le problème se pose sur un else mais je ne parviens pas au bon résultat malgré de nombreux essais :oops:

le dernier script:
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
  // Email =============================================================================================== 
       $email =($_POST['email']);
// Supprime tous les caractères illégaux du courrier électronique
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Email valide
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
     // echo "<br><a class='champs_3'>$email Est une adresse e-mail valide!</a><br>" ;
     $email =($_POST['email']);
      echo '<p><a class="champs_1" >Super tous les champs sont remplis! :</a></p><ul>';
    } else {
   $email =($_POST['email']);
    echo "<br><a class='champs_3'> $email : adresse non valide !</a><br>" ;
    }
    
  // fin mail  ==============================================================================================
        $telephone =($_POST['telephone']);
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $date_post = htmlentities($_POST['date_post'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
    // c'est ici qu'on vérifie si au moins un champ est vide avec OR :
    if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['age']) OR empty($_POST['adresse']) OR empty($_POST['email']) OR empty($_POST['telephone']) OR empty($_POST['url']) OR empty($_POST['titre']) OR empty($_POST['message']))
    {
        echo '<p><a class="champs_1" >Compléter les champs suivants :</a></p><ul>';	
        if(empty($_POST['nom']))
         {
         	 echo '<br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '<br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '<br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '<br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['email']))
        {
           echo '<br><li class="champs_2" >Email</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '<br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '<br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '<br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '<br><li class="champs_2" >Message</li>';
        }
    echo  '</ul>';
}
else // si les variables $_POST du formulaire n'existent pas, le code ci-dessus ne s'exécute pas
{
   
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )";
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
}
mysqli_close($conn);
?>

Re: Validation email après usage Filtres

par @rthur » 29 nov. 2016, 00:21

Regarde quelles sont les conditions qui font que le texte "Super tous les champs sont remplis! " s'affiche.

A l'heure actuelle, ton code s'exécute exactement comme il est écrit : "Super tous les champs sont remplis!" s'affiche quand tous les champs ne sont pas vides, ce qui est bien le cas.
Si tu veux un comportement différent, il faut que tu ajoutes des conditions dans ton if

Re: Validation email après usage Filtres

par bob56@ » 28 nov. 2016, 21:09

Merci @rthur d'éclairer ma lanterne

exemple : 1

[email protected] (pas d'erreur)

[email protected] : est une adresse e-mail valide!

Super tous les champs sont remplis! : (normal tout est OK)

exemple : 2

totoyopmail.com (manque @ lors de l'écriture )
totoyopmail.com : adresse non valide ! (OK)

Super tous les champs sont remplis! : (pas normal car il manque @ donc l'enregistrement dans la bdd ne devrait pas s'effectuer)

Re: Validation email après usage Filtres

par @rthur » 28 nov. 2016, 21:00

Bonjour,

Quel est le problème ?
Quel est le message d'erreur rencontré ?

Validation email après usage Filtres

par bob56@ » 28 nov. 2016, 19:29

Bonjour :D

et merci d'avance pour l'aide attendu.

Mon problème #-o , se situe à // Email ===================

point de départ pour récupérer un bon email et l'insérer dans la bdd si celui-ci est OK.

j'ai bien essayé de diverses manières, mais sans arriver au résultat escompté

si erreur lors de la saisie, afficher juste le message $email : adresse non valide ! sans inscription dans la bdd

voilà le script:
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
    // Email  ===============================================================================
  if($email = ($_POST['email'])){  	
     // Supprime tous les caractères illégaux du courrier électronique
       $email = filter_var($email, FILTER_SANITIZE_EMAIL);
     // Email valide
     if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {	
       $email =($_POST['email']);
      echo("<br><a class='champs_3'>$email : est une adresse e-mail valide!</a><br>");
    } else {
       $email =($_POST['email']);
    echo("<br><a class='champs_3'> $email : adresse non valide !</a><br>");
    }
  }  //  Email =============================================================================
        $telephone =($_POST['telephone']);
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $date_post = htmlentities($_POST['date_post'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
    // c'est ici qu'on vérifie si au moins un champ est vide avec OR :
    if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['age']) OR empty($_POST['adresse']) OR empty($_POST['email']) OR empty($_POST['telephone']) OR empty($_POST['url']) OR empty($_POST['titre']) OR empty($_POST['message']))
    {
        echo '<p><a class="champs_1" >Compléter les champs suivants :</a></p><ul>';	
        if(empty($_POST['nom']))
         {
         	 echo '<br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '<br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '<br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '<br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['email']))
        {
           echo '<br><li class="champs_2" >Email</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '<br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '<br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '<br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '<br><li class="champs_2" >Message</li>';
        }
    echo  '</ul>';
    
}
else // si les variables $_POST du formulaire n'existent pas, le code ci-dessus ne s'exécute pas
{
     // ici, ce que je veux éventuellement afficher
echo '<p><a class="champs_1" >Super tous les champs sont remplis! :</a></p><ul>';	
// Aucun champ n'est vide, on peut enregistrer dans la table
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )";
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
}
mysqli_close($conn);
?>