Autorisatioon pour les commentaires

gintoxic Messages postés 566 Statut Membre -  
gintoxic Messages postés 566 Statut Membre -
Bonjour,
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 du livre de Mathieu Nebra (le site du Zero) 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 :
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();
    }
}




--
Si Dieu a créé l'homme, qui a créé Dieu, l'homme non ?

20 réponses

Résumé de la discussion

Protéger un formulaire de commentaires contre le flood et les accès non autorisés passe par une vérification du pseudo et du mot de passe via PDO dans la table membres. Des réponses proposent des requêtes préparées et la vérification de l'existence du pseudo, la validation des champs et l'usage de fetch et closeCursor pour tester les résultats. Le fil évoque aussi des erreurs fréquentes: incohérences entre mail et email, syntaxes SQL mal formées et besoin d'éviter l'envoi de mots de passe en clair. En cas de nuance utile, certains soulignent l'importance de ne pas exposer le mot de passe et recommandent des hachages et des vérifications logiques séparant l'inscription des commentaires.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    salut, essayes plutôt comme ça:
    <?php
    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 et mot de pass existant
                if(isset($_POST['pseudo']) && isset($_POST['pass']){
                try{
    				$verif = $connexion->query("SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'");
    				$data = $verif->fetch();
    					if($data['pseudo'] == $loggin && $data['pass'] == $pass){
    						//login et mot de pass corrects on peut inserer le commentaire
    						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();
    						
    						
    					}else {
    						echo 'vous devez être connecté(e) pour poster un commentaire';
    					}
                }
                catch(Exception $e){
    				echo 'Erreur : '.$e->getMessage();
                }
            }
    }
    
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      merci pour ta réponse, mais ça m'affiche une erreur au niveau du navigateur non expliquée
      par contre cette ligne me semble bizarre au niveau des guillemets et apostrophes :
      $verif = $connexion->query("SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'");


      par ailleurs je ne sais pas d'où peut venir l'erreur ...
      0
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    non la ligne est normale les guillemets servent à la concatenation
    tu parles d'erreur, quelle erreur ?
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      justement il ne dit aucune erreur, je veux dire : aucune explication d'erreur, mais une erreur !! c'est assez agaçant de ne pas savoir où est l'erreur ou les erreurs..

      pour concaténer, il ne suffit pas de mettre :
      WHERE pseudo='.$loggin.' ");

      au lieu de
      WHERE pseudo='".$loggin."'");

      ???

      dans cette instruction à quoi correspond le $loggin ? la variable prédéfinie par mes soin qui est égal à $_POST['pseudo'] ou à la valeur trouvé dans la table ?
      stp

      merci
      0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    dans la requette telle que je te l'ai donné:

    "SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'"


    la chaine commence et finit par "

    donc pour concaténer à l'intérieur il faut:

    "blabla".$va."bbbaaa"

    mais comme il faut en plus encadrer la valeur par des '

    ça fait bien:
    "SELECT pseudo, pass FROM membres WHERE pseudo='".$loggin."'"


    $loggin = $_POST['pseudo']; donc la valeur sasie par l'utilisateur
    que l'on compare à celle dans la table par la condition WHERE et on verifie que le pass saisi est bien associé à ce pseudo dans la BDD

    if($data['pseudo'] == $loggin && $data['pass'] == $pass)

    $data['pseudo'] c'est que qui est dans la base
    $loggin ce qui a été saisi

    idem pour le pass
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      salut
      c'est pas plutot :
      if(($data['pseudo'] == $loggin && $data['pass'] == $pass)) 
      ?

      je demande hein...
      0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    pourquoi deux parenthèses de chaque côté ?
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      oula oui, je fatigue moi.... c'est pas du tout ça !
      autant pour moi Alain, j'ai fait trop de code pour bien discerner
      mais j'ai trouvé comment faire cette partie de script autrement en fait mis à part que je ne sais pas comment faire pour vérifier que le pseudo entré correspond bien au mot de passe et au mail
      pour éviter que l'utilisateur n'ouvre un compte par mot de passe et faire une bonne authentification....
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain_42 Messages postés 5413 Statut Membre 904
     
    pour vérifier que le pseudo correspond au mot de pass enregistré dans la BDD c'est comme je t'ai indiqué.
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      et comment je fais avec ce code ? il faut que je refasse tout ?

      if(isset($_POST['submit'])){
              if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){
                  echo '<p class="vide">Un des champs est vide</p>';
              } // le formulaire est vide, on ne va pas plus loin !
              //------------------------------------------------------------------------------------------------------
              // on a validé le formulaire et rempli l'intégralité du formulaire...
              else {
                    // préparation de la requête de vérif de l'existence des données
                    $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass');
                    // execution avec les paramètres 
                    $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['passwd']));
                    // s'il n'y a pas de résultat
                      if ($auth->fetchColumn() < 1) {
                          echo 'vous devez être enregistré(e) pour poster un commentaire';
                      }
                      // ----------------------------------------------------------------------------------------------
                      // Les données sont trouvées et on va chercher l'existence d'une Session
                      else { // si le pseudo est trouvé
                      	
                      	if (empty($_SESSION['pseudo'])) { //et que la session n'existe pas
          				echo 'ouverture de session';
      					} 
      					//--------------------------------------------------------------------------------------------
      					else { // si la session est ouverte 
          					// insertion du commentaire
          					// 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
      
                                   $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
                                  }
      
                                  }
                     			}
      				}
      		}
      0
  7. Alain_42 Messages postés 5413 Statut Membre 904
     
    est ce qu'il fonctionne si oui c'est bon avec une méthode sensiblement différente mais qui revient au même.
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      pas du tout comme je l'espere, voici 3 entrées que j'ai créé vite fait et qui n'ont pas alerté qui que ce soit
      id    pseudo        mail               pass
      
      67	testeur	adresse@mail.fr	         rerere
      65	kri2sis	adresse@mail.fr	          rerere
      66	kri2sis	autreadresse@mail.fr     rerere
      0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    je n'ai pas regardé de près ton code, mais

    dans les 3exemples que tu donnes tous ont le m^me mot de pass et deux ont le m^me pseudo et mot de pass

    dans ton code je ne vois pas la partie connexion BDD
    new PDO.....
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      // Désactive l'émulateur de requêtes préparées (hautement recommandé)
                      $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
                      
                      // Active le mode exception
                      $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                      
                      // Indique le charset 
                      $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
      
       
                  try // on essaye de se connecter
                  {
                  $connexion = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options);
                  }
       
                  catch(Exception $e) 
                  {
                  echo 'Erreur : '.$e->getMessage().'<br />N° : '.$e->getCode(); 
                      }
      0
  9. Alain_42 Messages postés 5413 Statut Membre 904
     
    comme cela ça ira mieux:

    <?php
    $host='localhost';
    $db_name='test2';
    $user_host='root';
    $pass_host='';
    if(isset($_POST['submit'])){
            if(empty($_POST['pseudo']) OR empty($_POST['message']) OR empty($_POST['passwd'])){
                echo '<p class="vide">Un des champs est vide</p>';
            } // le formulaire est vide, on ne va pas plus loin !
            //------------------------------------------------------------------------------------------------------
            // on a validé le formulaire et rempli l'intégralité du formulaire...
            else {
    			//connexion base
    		try {
    			$connexion = new PDO('mysql:host='.$host.';dbname='.$db_name.'', ''.$user_host.'', ''.$pass_host.'') ;
    		} catch(PDOExeption $e) {
    			die('Erreur lors de la connexion a la base de donnees' .$e->getMessage());
    		}
    	
    			
                  // préparation de la requête de vérif de l'existence des données
                  $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass');
                  // execution avec les paramètres 
                  $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['passwd']));
                  // s'il n'y a pas de résultat
                    if ($auth->fetchColumn() < 1) {
                        echo 'vous devez être enregistré(e) pour poster un commentaire';
                    }
                    // ----------------------------------------------------------------------------------------------
                    // Les données sont trouvées et on va chercher l'existence d'une Session
                    else { // si le pseudo est trouvé
                    	
                    	if (empty($_SESSION['pseudo'])) { //et que la session n'existe pas
    						session_start();
    						$_SESSION['pseudo']=$_POST['pseudo'];
    						//la tu ouvres une session et ensuite tu enregistres le commentaire
    						//car tu ne peux passer dans le if et dans le else en même temps
    					
        					// insertion du commentaire
        					// 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
    
                                 $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
                                }
    
                                }
                   			}
    				}
    		}
    
    ?>
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      ma page bloque son CSS (http://symposion.fr pour test)
      de plus je me rends compte que ej te casse les pieds avec un formulaire de commentaire alors qu'il faut que je regle d'abord le probleme avec le formulaire d'enregistrement de compte.... je suis désolé et le dernier exemple que je t'avais donné est ce qui est dans la bdd lors de l'enregistrement : il enregistre un peu n'importe comment en effet


      try{
              $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options);
              // Désactive l'émulateur de requêtes préparées (hautement recommandé)
                      $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
                      
                      // Active le mode exception
                      $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                      
                      // Indique le charset 
                      $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
          }
          catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
                  {
                  die('Erreur : '.$e->getMessage());
                      }
                      
                      if(isset($_POST['submit'])){
                    //  -------------------------------------------------------------------------------------------------------------
                      if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){
                          echo '<p class="vide">Un des champs est vide</p>';
                          } // le formulaire est vide, on ne va pas plus loin !
                          if ($_POST['pass'] != $_POST['pass2']) {
                              echo 'Les mots de passe doivent être identiques'; 
                          } // si les mots de passe sont différents, on le signale
      
                          //------------------------------------------------------------------------------------------------------
                          // Si tout est OK ...
                          
                          if(isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['pass']) AND isset($_POST['pass2'])){ 
                              $email = $_POST['email'];
                              $loggin = $_POST['pseudo'];
                              $passwd = $_POST['pass'];
                              $passwd2 = $_POST['pass2'];
                          // on a validé le formulaire et rempli l'intégralité du formulaire... et créé les variables
                          //--------------------------------------------------------------------------
                               if(preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ 
                               // préparation de la requête de vérif de l'existence des données
                          $auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email');
                          // execution avec les paramètres 
                           $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email']));
                          // s'il n'y a pas de résultat
                              if ($auth->fetchColumn() < 1) {
                          //on définit les logins / paramètres de la base de donnée
                              $insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)')
                              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, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete
                              
                              echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>';
                              echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>';
                              }
                              else{ echo 'Le compte existe déjà, <a href="#">se connecter</a> ';}
                              }
                              else{echo 'Vous avez entré une adresse mail invalide';}
                              }
                          
                          }
                          
                          
                             //-----------------------------------------------------------------------------------  
      
                           //--------------------------------------------------------------------------------------
                           
                           
      
      0
  10. Alain_42 Messages postés 5413 Statut Membre 904
     
    et comme ça:
    (voir commentaires)
    <?php
    $hote='localhost';
    $BD='test2';
    $user='root';
    $pass='';
    	// Désactive l'émulateur de requêtes préparées (hautement recommandé)
         $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
            // Active le mode exception
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        // Indique le charset 
        $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
    	
    	//si tu utilises une variable $pdo_options il faut la définir avant 
    	
    try{
        $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options);
          
    }
      catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
        {
            die('Erreur : '.$e->getMessage());
        }
                    
                    if(isset($_POST['submit'])){
    					if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){
    						echo '<p class="vide">Vous devez remplir tous les champs</p>'; // le formulaire n'est pas complet, on ne va pas plus loin !
                        }else{ 
    						//recup des valeurs saisies
    						$email = $_POST['email'];
    						$loggin = $_POST['pseudo'];
    						$passwd = $_POST['pass'];
    						$passwd2 = $_POST['pass2'];
    						
    						if ($passwd != $passwd2) {
    							echo 'Les mots de passe doivent être identiques'; // si les mots de passe sont différents, on le signale
    						}elseif(!preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ 					
    							echo 'Vous avez entré une adresse mail invalide';
    						}else{						
    							// Si tout est OK ...                 
    								//ATTENTION tu mets parfois mail, parfois email, sois plus rigoureux !
    							 // préparation de la requête pour vérif si les saisie n'existent pas déja
    							$auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email');
    							// execution avec les paramètres 
    							$auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email']));
    							// s'il n'y a pas de résultat
    							if ($auth->fetchColumn() < 1) {
    							//on enregistre l'utilisateur dans la base de donnée
    								$insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)')
    								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, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete
    								if($insertion_table){
    									//la requette s'est bien déroulée
    									echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>';
    									echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>';
    								}
    							}else{ 
    								echo 'Le compte existe déjà !'; //pourquoi se deconnecté on est pas encore connecté a ce moment on cherche seulement a s'enregistrer
    							}
                            }
                        }
    				}
    				
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <style type="text/css">
    #bloc_message{
        background: #FAFAFA;
        /*min-width:300px;
        min-height:200px;
        max-width:40%;*/
        border:1px solid #D8D8D8;
        border-radius: 0 10px 10px 0;
        padding-left: 10px;
        padding-top: 5px;
        border-left:6px solid #A4A4A4;
    
    }
    /*#bloc_message:nth-child(even){
        background:red;
    }*/
    .whitesmoke{background:whitesmoke;
        border:1px solid #A4A4A4;}
    .vide{
        color:red;
    }
    .whitesmoke[value]{
        color:grey;
        font-style: italic;
    }
    #pseudo{
        /*border: 1px solid blue;*/
        margin-top :50px;
        min-width:300px;
        max-width:100%;
    }
    .heure{
        font-size: 10pt;
        display: inline-block;
        text-align: left;
        width:30%;
        font-style: italic;
        /*border:1px solid red;*/
    }
    .nom{
        text-align: right;
        display:inline-block;
        border:red;
        width:50%;
        position:relative;
        margin-left: 90px;
        /*border: 1px solid green;*/
    }
    </style>
    </head>
    
    <h4>Inscription: </h4>
    				<!-- il ne faut pas mettre action="#" mais action="" tout simplement -->
                        <form method="post" action="" id="hide_form">
                        Login : <input type="text" name="pseudo" class="whitesmoke" value="" /><br /><br />
                        Mot de passe : <input type="password" name="pass" value="" /><br />
                        Retaper mdp : <input type="password" name="pass2" value="" /><br />
                        Email : <input type="text" name="email" value="" /><br />
                       
                        <input type="submit" value="envoyer" name="submit" />
                        </form>					
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      donc, une chose de base que j'ai oublié c'est : merci à toi pour le temps que tu passes, la patience et la volonté d'aider...

      ensuite, pour ce dernier code, il marche : il entre des entrées dans la base sauf si celles saisies sont déjà dans la base avec cette combinaison : pseudo/email/pass mais il suffit de changer un des parametres et il enregistre quand meme (cf le petit shéma de la table 'membres' que j'ai posté tout à l'heure)
      pour les commentaires, il reconnait bien la présence du pseudo mais il reste à ouvrir une session...
      le souci c'est que je ne sasi aps comment on peut faire pour le faire en pleine page . il faut que je fasse un script au préalble que je "require" en heut de chaque page ?
      et dans mes formulaires ? surtout que je vais etre obligé de faire un formulaire pour la conneion.... j'imagine qu'il sera moins dur que les deux autres voire qu'il ressemblera à celui pour les commentaires...
      0
  11. Alain_42 Messages postés 5413 Statut Membre 904
     
    pour la connexion tu fais un formulaire pour la saisie pseudo et pass

    ensuite dans le code php tu fait une requette BDD qui verifie que le couple login/pass existe pour ouvrir une session

    session_start();

    $_SESSION['pseudo']=$pseudo;
    header(location:accueil.php); //vers la première page du site

    ensuite tout en haut de toutes les pages accessibles seulement si connecté tu mets:
    <?php
    //avant ça il ne faut rien mettre, pas de code html
    session_start();
    if(!isset($_SESSION['pseudo'] || $_SESSION['pseudo'] !=""){
         header(location:connexion.php);
    }else{
      //toute la partie html de ta page
     //tu peux y  mettre aussi
    echo 'Bonjour '.$pseudo.' vous êtes connecté';
    }
    
    
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      pour ce qui est de la session, c'est juste pour mettre le psedo de la personne dans un endroit de chaque page et évidemment pour pouvoir mettre des commentaires
      0
  12. gintoxic Messages postés 566 Statut Membre 10
     
    je viens de lire que sql disposait de champs uniques qui garantissent l'unicité et donc de cette façon on n peut entrer 2 fois la même valeur de champs et ça j'avoue que j'en ai besoin pour le mail au niveau de l'inscription
    apres un test, ca marche de telle facon qu'on ne peut entrer un mail identque à celui deja présent dans la table mais qu'au niveau visuel sur le site, ca stoppe tout (meme le dsign html/css
    or je souhaite emettre un commentaire lorsque cet évenement se produit (tentative de doublon)

    est ce que je peux faire ca ?

    merci
    0
  13. Alain_42 Messages postés 5413 Statut Membre 904
     
    je ne voit pas comment ça peut bloquer le html css

    avec inscription.php lorsque l'on fait la verification

    bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo AND pass = :pass AND email = :email');
    // execution avec les paramètres
    $auth->execute(array(':pseudo'=>$_POST['pseudo'], ':pass'=>$_POST['pass'], ':email'=>$_POST['email']));
    // s'il n'y a pas de résultat
    if ($auth->fetchColumn() < 1) {


    on s'assure bien que ni le pseudo,, ni le pass, ni le mail n'existent sur une même "ligne"
    l'inconvénient c'est que tu peux avoir plusieurs fois le même pseudo avec soit un pass différent soit un mail différent.

    mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ?

    il suffit de faire une autre requette sur le pseudo seulement puis une sur le mail

    <?php
    $hote='localhost';
    $BD='test2';
    $user='root';
    $pass='';
    	// Désactive l'émulateur de requêtes préparées (hautement recommandé)
         $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
            // Active le mode exception
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        // Indique le charset 
        $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
    	
    	//si tu utilises une variable $pdo_options il faut la définir avant 
    	
    try{
        $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options);
          
    }
      catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
        {
            die('Erreur : '.$e->getMessage());
        }
                    
                    if(isset($_POST['submit'])){
    					if(empty($_POST['pseudo']) OR empty($_POST['email']) OR empty($_POST['pass']) OR empty($_POST['pass2'])){
    						echo '<p class="vide">Vous devez remplir tous les champs</p>'; // le formulaire n'est pas complet, on ne va pas plus loin !
                        }else{ 
    						//recup des valeurs saisies
    						$email = $_POST['email'];
    						$loggin = $_POST['pseudo'];
    						$passwd = $_POST['pass'];
    						$passwd2 = $_POST['pass2'];
    						
    						if ($passwd != $passwd2) {
    							echo 'Les mots de passe doivent être identiques'; // si les mots de passe sont différents, on le signale
    						}elseif(!preg_match('#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#',$email)){ 					
    							echo 'Vous avez entré une adresse mail invalide';
    						}else{						
    							// Si tout est OK ...                 
    								//ATTENTION tu mets parfois mail, parfois email, sois plus rigoureux !
    							 // préparation de la requête pour vérif si le pseudo pas déja
    							$auth = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo');
    							// execution avec les paramètres 
    							$auth->execute(array(':pseudo'=>$_POST['pseudo']));
    							// s'il n'y a pas de résultat
    							if ($auth->fetchColumn() < 1) {
    									//verif si mail existe déja
    								$auth2 = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE email = :email');
    								// execution avec les paramètres 
    								$auth2->execute(array(':email'=>$_POST['email']));
    								// s'il y a 1 résultat
    								if ($auth2->fetchColumn() >0) {
    									echo 'Le mail existe déja !';
    								}else{								
    								//si tout OK
    								//on enregistre l'utilisateur dans la base de donnée
    									$insertion_table = $bdd->prepare('INSERT INTO membres(pseudo, email, pass) VALUES(:pseudo, :email,:pass)')
    									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, 'email'=>$email, 'pass'=>$passwd)); // on éxécute la requete
    									if($insertion_table){
    										//la requette s'est bien déroulée
    										echo '<p>Vous êtes désormais enregistré(e) ! Et si on se connectait maintenant ?</p>';
    										echo '<p><a href="connexion.php"><em>C\'est par ici</em></a></p>';
    									}
    							
    							}else{ 
    								echo 'Le pseudo existe déjà !'; 
    							}
                            }
                        }
    				}
    				
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <style type="text/css">
    #bloc_message{
        background: #FAFAFA;
        /*min-width:300px;
        min-height:200px;
        max-width:40%;*/
        border:1px solid #D8D8D8;
        border-radius: 0 10px 10px 0;
        padding-left: 10px;
        padding-top: 5px;
        border-left:6px solid #A4A4A4;
    
    }
    /*#bloc_message:nth-child(even){
        background:red;
    }*/
    .whitesmoke{background:whitesmoke;
        border:1px solid #A4A4A4;}
    .vide{
        color:red;
    }
    .whitesmoke[value]{
        color:grey;
        font-style: italic;
    }
    #pseudo{
        /*border: 1px solid blue;*/
        margin-top :50px;
        min-width:300px;
        max-width:100%;
    }
    .heure{
        font-size: 10pt;
        display: inline-block;
        text-align: left;
        width:30%;
        font-style: italic;
        /*border:1px solid red;*/
    }
    .nom{
        text-align: right;
        display:inline-block;
        border:red;
        width:50%;
        position:relative;
        margin-left: 90px;
        /*border: 1px solid green;*/
    }
    </style>
    </head>
    
    <h4>Inscription: </h4>
    				<!-- il ne faut pas mettre action="#" mais action="" tout simplement -->
                        <form method="post" action="" id="hide_form">
                        Login : <input type="text" name="pseudo" class="whitesmoke" value="" /><br /><br />
                        Mot de passe : <input type="password" name="pass" value="" /><br />
                        Retaper mdp : <input type="password" name="pass2" value="" /><br />
                        Email : <input type="text" name="email" value="" /><br />
                       
                        <input type="submit" value="envoyer" name="submit" />
                        </form>					
    0
  14. gintoxic Messages postés 566 Statut Membre 10
     
    salut et encore merci, ce code me hante et j'avais eu cette idée mas sans savoir comment la poser dans le code... tu l'as fait !! :)
    bon ceci dit est ce que je dois interdire deux pseudo diffrents ? perso, je pense que oui

    pour répondre à ta question :
    "mais si je comprend bien tu veux aussi t'assurer que le mail n'existe pas non plus dans d'autres enregistrements de ta base ? "
    - tout à fait deux personnes ne peuvent avoir le meme mail contrairement au pseudo... quoique.... et au pass.

    je te propose de tester ton code (bon j'ai participé un tout petit peu....) à cette adresse http://symposion.fr/form_loggin.php et me dire si tu voisquelque chose qui cloche ou si tout est ok...

    en tout cas un grand merci à toi....

    si tu suis toujours l'histoire, je vais maintenat passer au formulaire de connexion pour boucler la boucle entre l'inscription et les commentaires
    ----> les session à présent (mais là le Site du Zéro ne va pas beaucoup m'aider à moins que j'ai mal lu le cours....
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      bon et bien la connexion me semble faite mais là maintenant je reviens sur les commentaires et j'ai un souci.... il faut que je puisse autoriser les connectés à laisser des commentaires, or, ça n'est pas le cas il faut à chaque fois qu'ils rentre leur identifiants...
      est ce que je dois vire le formulaire au bénéfice de celui de connexion ?
      je suis un peu perdu dans l'espace de mes codes là

      merci
      0
  15. Alain_42 Messages postés 5413 Statut Membre 904
     
    concernant le pseudo il vaut mieux que deux personne différentes n'aient pas le m^me sinon lorsqu'ils vont poster un commentaire on ne saura pas lequel l'a fait.

    concernant la page commentaires;

    il suffit de faire une page tout simple ans vérif à l'intérieur mais en mettant tout au début la verif de session
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      voici le petit morceau de code que j'ai testé mais qui ne fonctionne pas
      else if(!isset(!$_SESSION['pseudo']){
                        header('location:connex.php');
                        exit;
                      }
      0
  16. gintoxic Messages postés 566 Statut Membre 10
     
    j'ai un souci avec mon code, mais je ne vois pas où... help me please...

    if(isset($_POST['submit'])){
            if(!isset($_POST['pseudo']) AND !isset($_POST['message'])){
                echo '<p class="vide">Les champs sont vides</p>';
            } // le formulaire est vide, on ne va pas plus loin !
            //------------------------------------------------------------------------------------------------------
            else{
                  // préparation de la requête de vérif de l'existence des données
                  $auth = $connexion->prepare('SELECT COUNT(*) FROM membres WHERE pseudo = :pseudo');
                  // execution avec les paramètres 
                  $auth->execute(array(':pseudo'=>$_POST['pseudo']));
                  // s'il n'y a pas de résultat
                    if ($auth->fetchColumn() < 1) {
                        echo 'vous devez être enregistré(e) pour poster un commentaire <br /> <a href="connex.php"><em>Connexion</em></a>';
                    }
                    // else if(!isset(!$_SESSION['pseudo']){
                    //   header('location:connex.php');
                    //   exit;
                    // }
    					       else { // si la session est ouverte 
        					// insertion du commentaire
        					// on définit les logins / paramètres de la base de donnée
                      $insertion_table = $connexion->prepare('INSERT INTO commentaire(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
    
                      $result= $connexion->query('SELECT * FROM commentaire 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
                      }
                     }
                   }
    		        }

    0
  17. Alain_42 Messages postés 5413 Statut Membre 904
     
    il faut procéder ainsi:
    <?php
    session_start();
    //on teste si la variable de session initialisée lorsqu'il se connecte existe
    if(!issset($_SESSION['pseudo']) || $_SESSION['pseudo'] ==""){
    	//pas de session ouverte donc l'utilisateur ne s'est pas connecté
    	//on le renvoie sur la page de connexion
    	header('Location:connex.php');
    
    }else{
    	//variables de travail
    	$reaffiche_formulaire=true;
    	//l'utilisateur est bien connecté
    	if(isset($_POST['submit'])){
            if(empty($_POST['pseudo']) AND empty($_POST['message'])){
    			$reaffiche_formulaire=true;
                echo '<p class="vide">Les champs sont vides</p>';
            } // le formulaire est vide, on ne va pas plus loin !
            //------------------------------------------------------------------------------------------------------
            else{
    			// on définit les logins / paramètres de la base de donnée
    			try{
    				$bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass,$pdo_options);
          
    			}
    			catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
    			{
    				die('Erreur : '.$e->getMessage());
    			}
        		// insertion du commentaire   		
    			
                $insertion_table = $connexion->prepare('INSERT INTO commentaire(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
    			
    			$reaffiche_formulaire=false; //on empeche le raffichage du formulaire
    					//affichage des messages
                $result= $connexion->query('SELECT * FROM commentaire 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
                     }
                }
        }
    	
    	
    	if($reaffiche_formulaire){
    		//la tu mets ton code formulaire commentaires
    	
    	
    	}
    } //fin du if session
    
    
    	
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      salut, qu'est-ce que tu appelle "code formulaire commentaires" stp ? est ce formulaire qui ert à entrer un commentaire ?

      pour le moment j'ai un probleme d'affichage et je cherche d'où ça vient car aucune donnée n'est transmise du code à la base et de la base au code...
      0
  18. Alain_42 Messages postés 5413 Statut Membre 904
     
    oui c'est le formulaire qui sert a entrer le commentaire
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      bon beh je ne trouve pas mais il semble qu'il y ait un probleme....
      http://symposion.fr/test_again2.php
      0
    2. gintoxic Messages postés 566 Statut Membre 10
       
      je ne comprends pas l'utilité de la variable $reaffiche_formulaire...
      0
  19. Alain_42 Messages postés 5413 Statut Membre 904
     
    cette variable permet d'afficher ou non la partie formulaire

    au départ elle est a true --> donc on affiche
    si erreur de saisie elle rest à true --> donc on affiche

    si tout ok concernant l'enregistrement dans la base
    elle passe à false --> donc on n'affiche plus le formulaire mais la liste des commentaires

    mets moi ton code
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      ok j'avais bien saisi alors...
      session_start() semble empecher l'affichage de la page
      <?php
                      session_start();
      //on teste si la variable de session initialisée lorsqu'il se connecte existe
      if(!issset($_SESSION['pseudo']) OR $_SESSION['pseudo'] ==""){
        //pas de session ouverte donc l'utilisateur ne s'est pas connecté
        //on le renvoie sur la page de connexion
        header('Location:connex.php');
        exit;
      
      }
      
      else{
        //variables de travail
         $reaffiche_formulaire=true;
        //l'utilisateur est bien connecté
        if(isset($_POST['submit'])){
              if(empty($_POST['pseudo']) AND empty($_POST['message'])){
            $reaffiche_formulaire=true;
                  echo '<p class="vide">Les champs sont vides</p>';
              } // le formulaire est vide, on ne va pas plus loin !
              //------------------------------------------------------------------------------------------------------
              else{
            // on définit les logins / paramètres de la base de donnée
                $hote='localhost';
                $BD='';
                $user='';
                $pass='';
            try{
              $bdd = new PDO('mysql:host='.$hote.';dbname='.$BD, $user, $pass);
            
            }
            catch(Exception $e) // si on y arrive pas, le $e contient les erreurs
            {
              die('Erreur : '.$e->getMessage());
            }
              // insertion du commentaire       
            
                  $insertion_table = $connexion->prepare('INSERT INTO commentaire(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
            
            $reaffiche_formulaire=false; //on empeche le raffichage du formulaire
                //affichage des messages
                  $result= $connexion->query('SELECT * FROM commentaire 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
                       }
                  }
          }
        
        
        if($reaffiche_formulaire){
          //la tu mets ton code formulaire commentaires
                    echo '<form method="post">';
                     echo '<h1>Commentaires</h1>';
                       echo '<p>Pseudo* : </label><input type = "text" name = "pseudo" /></p>';
                       echo '<p><textarea name="message" rows="7" cols="40">Bonjour,</textarea></p>';
                       echo '<input type="submit" value = "Envoyer" name="submit" />';
                     echo '</form>';
        
        }
      }//fin du if session
      ?>
      0
  20. Alain_42 Messages postés 5413 Statut Membre 904
     
    $_SESSION['pseudo'] est bien la variable de session que tu initailise lors de la connexion ?

    je viens de voir un pb

    if(!issset($_SESSION['pseudo']) OR $_SESSION['pseudo'] ==""){


    3 s a isset
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      alors là ce qui se passe :
      on ne peut accéder à la page codée car elle redirige automatiquement vers connex.php...
      je pense que je vais devoir faire le coup en 2 fois avec une page qui affiche les commentaires (la meme page pour chacun de tous mes textes et là je vais avoir besoin d'aide aussi...) et où est le formulaire et une page de code qui va insérer les commentaires dans la base...
      qu'est ce que tu en penses ?
      0
  21. Alain_42 Messages postés 5413 Statut Membre 904
     
    je t'ai mis un MP
    0
    1. gintoxic Messages postés 566 Statut Membre 10
       
      repondu :)
      0