[RESOLU] vérification champs avant insertion base ( serveur PHP 7)

Eléphant du PHP | 172 Messages

23 nov. 2016, 19:53

Bien le bonjour à tous :D

Merci d'avance à celui qui m'apportera la solution !

Après quelques jours à batailler et trouver par moi-même je tourne en rond:
- les données sont insérées ou non dans la base selon les modifications apportées #-o
Mon souhait, que celles-ci ne soient pas insérées si absence de renseignements lors de l'inscription.

voilà la page qui pose problème:
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
if (isset($_POST['nom']))       $nom=$_POST['nom'];
else      $nom="";
if(isset($_POST['prenom']))     $prenom=$_POST['prenom'];
else      $prenom="";
if(isset($_POST['age']))     $prenom=$_POST['age'];
else      $age="";
if(isset($_POST['adresse']))       $rien=$_POST['adresse'];
else      $adresse="";
if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";
if(isset($_POST['telephone']))      $email=$_POST['telephone'];
else      $telephone="";
if(isset($_POST['url']))        $url=$_POST['url'];   
else      $url="";
if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";
if(isset($_POST['date_post']))        $url=$_POST['date_post'] = date("d-m-Y H:i:s");
else      $date_post="";
if(isset($_POST['message']))    $message=$_POST['message'];
else      $message="";
echo '<br><b><a class="champs_1">Veuillez renseigner:</a></b><br><br>';
// On vérifie si les champs sont vides 
if(empty($nom) OR empty($prenom) OR empty($age) OR empty($adresse) OR empty($email) OR empty($telephone) OR empty($url) OR empty($titre)  OR empty($message)) 
    {
        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>';
        }
    }

	else {	

        $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 = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
   }    
// Enregistrement 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;
}
$conn->close();
?>

Mammouth du PHP | 1967 Messages

24 nov. 2016, 09:50

tu dois mettre ta requète dans ton else, si tu veux quelle ne soit éxécuté que si tout est rempli
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 172 Messages

24 nov. 2016, 17:15

Spols encore Merci pour ton aide !

j'ai repris le script, maintenant si un champ n'est pas rempli j'ai bien le message d'erreur et rien n'est inscrit dans la base.

Si tous les champs sont ok > inscription dans la base de donné mais le résultat est surprenant :

NOM : OK
Prénom : age
Âge:
Adresse :
Email: Téléphone
Téléphone:
URL : OK

à savoir, si je n'utilise pas la vérification de champs lors de l'inscription, je n'ai pas de problème dans la bdd celle-ci est complète et OK
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
if (isset($_POST['nom']))       $nom=$_POST['nom'];
else      $nom="";
if(isset($_POST['prenom']))     $prenom=$_POST['prenom'];
else      $prenom="";
if(isset($_POST['age']))     $prenom=$_POST['age'];
else      $age="";
if(isset($_POST['adresse']))       $rien=$_POST['adresse'];
else      $adresse="";
if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";
if(isset($_POST['telephone']))      $email=$_POST['telephone'];
else      $telephone="";
if(isset($_POST['url']))        $url=$_POST['url'];   
else      $url="";
if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";
if(isset($_POST['date_post']))        $url=$_POST['date_post'] = date("d-m-Y H:i:s");
else      $date_post="";
if(isset($_POST['message']))    $message=$_POST['message'];
else      $message="";
    // 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" >Attention, vous avez oublié de remplir 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>';
//htmlspecialchars_decode permet affichage accents dans page PHP
        $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 = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
}
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" >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);
?>

Mammouth du PHP | 1967 Messages

24 nov. 2016, 17:50

2 choses :
pourquoi avoir enlevé du else l'attribution des variables avec htmlentities qui y était avant

de 2 , if(isset($_POST['age'])) $prenom=$_POST['age']; Il n'y a rien qui te choque ?

Remarque plus générale, pourquoi recupère tu 2 fois les données en _POST ? il te suffirait de le faire une fois pour toute. avec htmlentities et en début de script. et puis de tester qu'aucune n'est vide.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 172 Messages

24 nov. 2016, 19:53

OK çà roule, je vois que tu as un œil de lynx :D

Je reconnais là les pro =D> , encore merci

le code qui fonctionne:
<?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 = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $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" >Attention, vous avez oublié de remplir 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>';

// Remplacement de certains caractères spéciaux
     
}
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" >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);
?>