bonjour

je cherche à protéger mon formulaire de commentaires des entrées intepestives de pub et autres floodage. et dans cet optique, je souhaite ajouter une entrée "mot de passe" qui devra etre verifiée par rapport à la table "membres" (pour rappel, tout ce qui concerne les commentaires se trouvent dans la table "commentaires")
j'ai lu quelques pages d'un livre et il aborde les AS (alias).
je me susi dit qu'en utilisant un alias, je pourrait récupérer le mot de passe dans une table et le comparer à celui de l'autre par rapport au pseudo entré, mais je n'ai pas su faire correctement.
puis j'ai tenté de prendre simplement le pass de la table "membres" et de la comprarer à l'entrée de l'utilisateur ....
je n'y arrive pas où c'est une histoire de synthaxe/position du code...

lien pour voir le résultat :

http://symposion.fr/test_array.php

je n'ai rien trouvé sur la toile ou sur le livre qui puisse m'aider (des explications simple que je puisse comprendre évidemment)

apres plusieurs heures de tentative, je me heurte à un mur et je m'épuise en tachant de comprendre des choses qui ne sont pas expliquées

que signifie une requete où il apparait ".... WHERE pseudo='.$pseudo.' ');

il s'agit de requete qui pourrait peut-etre m'aider ?

comment définit-on qu'un pseudo est tant une table et comment on le compare avec celui entré par l'utilisateur dans le formulaire et à quel moment doit-on faire cette comparaison dans le script ?

je suis un peu perdu et je tiens à signaler quand meme que je suis un super novice en pdo et débutant en PHP.

tout ce qui peut etre une évidence pour vous est un questionnement pour moi.

j'adore apprendre et j'ai grandement besoin d'aide

puis-je compter sur vous et votre aide ?

je vous post ce que j'ai fait en dernier lieu dans mon script et je ne vois rien d'autre à faire meme si je ne cesse de chercher

merci à vous

ps : une autre cose que j'ai du mal à comprendre si PDOStatement est un objet que l'on utilise en php (une classe me semble-t-il...)

quand doit-on utiliser PDOStatement->closeCursor ? je ne l'ai vu utilisé que pour des requête comportant un fetch() (ce qui me parait logique)

est-ce qu'on l'utilise qua dans le cas de ces fetch() ?

code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
if(isset($_POST['submit'])){
 
 
 	//  $Jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");  
	 // $Mois = array("","janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");  
	 // $datefr = $Jour[date("w")]." ".date("d")." ".$Mois[date("n")]." ".date("Y").", ".date("H")." : ".date("i");
    $loggin =  $_POST['pseudo']; // htmlspecialchars ne sert à rien ici. Il ne faut l'utiliser que lorsqu'il y a une sortie de texte, pas une entrée. De plus, le "a écrit" est une donnée qui reviens donc elle aura sa place dans la boucle en bas
    $mess = $_POST['message']; // pareil
    $pass = $_POST['passwd'];
 
 
 
        // si tous les champs sont vides
        if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){
            echo '<p class="vide">Un des champs est vide</p>';
        }
        // vérification d'un pseudo existant
            if(isset($_POST['pseudo']){
            try{
            $verif = $connexion->query('SELECT pseudo, pass FROM membres');
            $data = $verif->fetch();
                if($data != $loggin){
                    echo 'vous devez être connecté(e) pour poster un commentaire';
                }
            }
            catch(Exception $e){
            echo 'Erreur : '.$e;
            }
        }
 
        // si tout est ok
        else{
            try{
            // on définit les logins / paramètres de la base de donnée
             $insertion_table = $connexion->prepare('INSERT INTO commentaires(pseudo, message,date_enregistrement) VALUES(:pseudo, :message,:date_enregistrement)')
             or exit(print_r($insertion_table->errorInfo())); // on prépare la requete SQL afin d'envoyer le message / pseudo. Si la requete échoue, on affiche l'erreur
             $insertion_table->execute(array('pseudo'=>$loggin, 'message'=>$mess, 'date_enregistrement'=>time())); // on éxécute la requete
            }
            catch(Exception $e){
                echo 'problème d\'insertion dans la bdd : '.$e->getMessage();
            }
 
 
            try{
		      $result= $connexion->query('SELECT * FROM commentaires ORDER BY date_enregistrement DESC'); // on séléctionne tous les champs de la table commentaires
             while ($donnees = $result->fetch()){
                echo '<div id="pseudo">';
                echo '<div class="heure">'.date('l d m Y H:i', $donnees['date_enregistrement']).'</div>';
                echo '<div class="nom">'.htmlentities($donnees['pseudo']).' a écrit : </div></div>';
                echo '<div id="bloc_message">"'.nl2br(htmlentities($donnees['message'])).'"</div>';
                // ici donc, on rajoute htmlentities (un dérivé de htmlspecialchars()) car cette fois ci, on sort le texte. De plus, on peut voir que " a écrit : " reviens car il sera rajouté à chaque passage de la boucle
            }
 
            }
            catch(Exception $e){
                echo 'problème avec la requête d\'affichage : '.$e->getMessage();
            }
            $result->closeCursor();
    }
}