Partage
  • Partager sur Facebook
  • Partager sur Twitter

Accès livre d'or

connexion

Sujet résolu
    6 avril 2009 à 11:04:27

    Bonjour,

    Je suis débutant php et je me pose plusieurs questions que je n'arrive pas à solutionner.

    J'ai crée un espace membre avec une base de donnée mysql chez free.
    La partie inscription fonctionne, connexion également en créant des sessions.
    Je voudrais que les visiteurs ne puissent accéder à mon livre d'or que s'ils sont inscrits et connectés.
    Ma question est :
    Comment formuler ma page "livre d'or" pour laisser l'accès qu'aux personnes connectés.

    voici les codes php

    connexion :
    <div id="corps">
       <!-- Ici on mettra le contenu principal de la page (tout le texte quoi) -->
    <p>
    
    <?php
    
    // Si le formulaire est envoyé
    if (isset($_POST['pseudo']) AND isset($_POST['pass'])) 
        {
          // Si $pseudo et $pass différents de null
           if(isset($pseudo,$pass))
            {
               mysql_connect("**","***","**");
    	       mysql_select_db("***");
    		   
    		   	//on utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la securité
    	        $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
    	        $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
    	        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
    	        $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
    	        $mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
    		   
    		    /* Requête pour récupérer les enregistrements répondant à la clause : champ du pseudo et champ du mdp de la table = pseudo et mdp postés dans le formulaire*/
                $requete = "SELECT * FROM inscription WHERE pseudo = '".$pseudo."' AND pass = '".$pass."'";  
        
             // Exécution de la requête
             $req_exec = mysql_query($requete) or die(mysql_error());
        
             // Création du tableau associatif du résultat
             $resultat = mysql_fetch_assoc($req_exec);
    		   
             // Les valeurs (si elles existent) sont retournées dans le tableau $resultat; 
             if (isset($resultat['pseudo'],$resultat['pass']))  
                {
                  /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                                        qui donne au visiteur la possibilité de visiter les pages protégées.  */
                  
                  $_SESSION['login'] = $pseudo;
                
                  // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                  $message = 'Bonjour '.htmlspecialchars($_SESSION['login']).' !!!  Vous êtes à présent connecté ';
    			  echo $message;
    			  exit;
                }
                else
                {   // Le pseudo ou le mot de passe sont incorrect
                $message = 'Le pseudo ou le mot de passe sont incorrect';
                }
    		}
    		
            else 
            {  //au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
             $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
            }
        }
    
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Bienvenu sur notre site !</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
    <body>
    <div id = "connexion">
        <form action = "connexion.php" method="post">
        <h1>Connexion</h1>
        <p><label for = "pseudo">Pseudo : </label><input type="text" name="pseudo" id="pseudo" /></p>
        <p><label for = "pass">Mot de passe : </label><input type="password" name="pass" id="pass" /></p>
        <p><input type="submit" value="Envoyer" id = "valider" /></p>
        </form>
        
    </div>
    


    et voici celui du livre d'or :
    <div id="corps">
       <!-- Ici on mettra le contenu principal de la page (tout le texte quoi) -->
       
       
       <h1> Livre d'or </h1><br/>
     
     <?php
     if(isset ($_SESSION['login']))
     {
        ?>
    	
       	<form method="post" action="livreor.php">
        <p> Notre site vous plait ? Laissez nous un message !</p>
    	<p>
    	 Pseudo :<br/><input name="pseudo" value="<?php echo $_POST['pseudo']?>"/><br/>
    	 Message :<br/>
    	 <textarea name="message" id="message_or" rows="8" cols="45"></textarea><br/>
         <input type="submit" value="Envoyer"/><br/><br/>
    	</p>
           </form>
    	   
    	 <p class="pages">
       
       
       	<?php 
    		   //d'abord on se connect à mysql
    	   mysql_connect("***","***","***");
    	   mysql_select_db("***");
    	
    	
    	// --------------- Etape 1 -----------------
        // Si un message est envoyé, on l'enregistre
        // -----------------------------------------
    
    
    	if (isset($_POST['pseudo']) AND isset($_POST['message']))
    	   
    	   {
    	     if($_POST['pseudo'] !=NULL AND $_POST['message'] !=NULL)// si on a quelque chose à enregistrer.
    	  
    	   {
    	   //on utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la securité
    	   $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
    	   $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
    	  	  //Si le post n'est pas deja dans la table, on enregistre le message.
    	   $pseudo = stripslashes($pseudo);//pour enlever les slashes avant les apostrophe une fois le pseudo ou message renvoyer de la BDD.
    	   $message = stripslashes($message);
    	   $message = nl2br($message);//Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
    	   if (mysql_num_rows(mysql_query("select * from livreor where pseudo='".$pseudo."' and message='".$message."'"))==0)
    	   mysql_query("INSERT INTO livreor VALUES('','".$pseudo."','".$message."','".time()."')") or die(mysql_error());
    	    }
    		
    		}
    	   
    	   // --------------- Etape 2 -----------------
           // On écrit les liens vers chacune des pages
           // -----------------------------------------
    	   
           //on met dans une variable le nombre de message qu'on veut par page:
    	   $nombredemessagesparpage = 20;//donc 20
    	   //On recupere le nombre total de messages
    	   $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor')or die(mysql_error());
    	   $donnees = mysql_fetch_array($retour);$totaldesmessages = $donnees['nb_messages'];
    	   //on calcul le nombre de pages a creer
    	   $nombredepages = ceil($totaldesmessages / $nombredemessagesparpage);
    	   //puis on fait une boucle pour ecrire les liens vers chaque des pages
    	   echo 'page:';
    	   for($i = 1 ; $i <= $nombredepages ; $i ++)
    	   {
    	     echo '<a href ="livreor.php?page='.$i.'"> '.$i.' </a>';
    	   }
    	   
    	   ?>
    	   <br/>
    	   	<?php 
    	   //nombre de messages posté
           $retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM livreor") or die(mysql_error());
           $donnees = mysql_fetch_array ($retour)
    	   ?>
           Nombre de messages : <?php echo $donnees['nbre_entrees'] ?>
    	   
    	  </p>
    	  
    	   <?php
    	   
    	   // --------------- Etape 3 ---------------
           //maintenant on va afficher les messages
    	   
    	   
    	  if(isset($_GET['page']))
    	  {
               $page = $_GET['page'];	  //on recupere le numero de la page indiqué dans l'adresse (livreor.php?page=4)
    	  }
    	  else //la variable n'existe pas, c'est la premiere fois qu'on charge la page
    	  {
    	     $page = 1 ;//on se met sur la page1 (par defaut)
    	  }
    	  //on calcul le numero du premier message qu'on prend pr LIMIT de Mysql
    	  $premiermessageAafficher = ($page - 1) * $nombredemessagesparpage;
    	  
    	  $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT '.$premiermessageAafficher.' , '.$nombredemessagesparpage) or die(mysql_error()) ;
    	  
    	  while ($donnees = mysql_fetch_array($reponse))
    	  {
    	  ?>
    	  <p><fieldset class="ft_livreor"><strong> <?php echo $donnees['pseudo'];?> </strong><span class="ecrit"> a écrit le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']);?></span> :
    	  <br /><hr /><?php echo $donnees['message'];?> </fieldset></p>
    	  <?php
    	  }
    	   
    	   
    	   //on se deconnect de mysql
    	   mysql_close();
    
     }
     
     else
     {
     echo "Il faut etre connecté pour acceder à cette page";
     }
      
    	?>
    	
    </div>
    


    comme ceci cela ne fonctionne pas, snif !



    Merci par avance.
    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2009 à 11:10:07

      Pourrais-tu être plus clair sur ce qui ne fonctionne pas ?
      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2009 à 11:11:30

        Ben tu peux rajouter dans ta table un champ conectes. Tu lui met 'non' comme valeur de depart lorsqu'il sinscrit et lorsque que tu fait session start, lorsqu'il se conecte, tu lui met 'oui' comme valeur et quand tu fais session destroy tu lui met 'non' comme valeur. Et pour ton livre d'or tu n'accepte que les membres qui ont 'oui' dans le champ conectes.
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2009 à 11:28:10

          merci pour vos reponse.

          goxheaven, quand je dis que ca ne fonctionne pas :

          l'accès au livre d'or ce fait meme si tu ne te connecte pas.

          cyber-tom, ok pour le champ par-contre en php ca donnerait quoi pour mon code stp ?

          voici le site en cours de construction :
          http://atilio974.free.fr
          • Partager sur Facebook
          • Partager sur Twitter

          Accès livre d'or

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown