Membre déconnecter sans arret

Résolu
Bonjour,

J'ai créer une colonne a droite sur la page d'accueil de mon site pour se connecter avec un champ nom d'utilisateur et mot de passe, j'arrive a me connecter , la n'est pas le problème, mais c'est que des que je suis connecté et que j'ai envie de retourné sur la page d'accueil sa me déconnecte direct ...
Il doit avoir une erreur dans mon php , merci de bien vouloir m'aider

<?php
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION['username']))
{
//On le deconecte en supprimant simplement les sessions username et userid
unset($_SESSION['username'], $_SESSION['userid']);
?>
<center>
<div class="message">Vous êtes bien déconnecté.<br />
<a href="http://moment-delirant.fr">Accueil</a></div>
</center>
<?php
}
else
{
$ousername = '';
//On verifie si le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//Si le mot de passe es bon, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans la session username et son identifiant dans la session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
?>
<center>
<div class="message">Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.<br />
<a href="indexx.php">En cliquant ici</a></div>
</center>
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'Erreur dans le Nom d\'utilisateur et/ou dans le mot de passe.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>

<table style="border:2px solid black;">
<th colspan="2" style="border:2px solid black;">Espace membre </th>
<tr>
<td class="aff"><form name="connexion.php" action="#" method="post">
<center><label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
<label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
<input type="submit" value="Connexion" /><br/>
<a href="sign_up.php">Inscription</a><br>
<a href="passperdu.html">Pass perdu</a>
<input type="hidden" name="mode" value="connexion" />
</td>
</tr>
</center>
</table>
<?php
}
}
?>

Merci bcp

9 réponses

  1. C'est assez simple:
    if(!isset($_SESSION['username']))
    {
    echo 'Code de la colonne';
    }

    Cette condition affichera le code que tu voudra dans le cas où le membre n'est pas connecté.
    1. Bah...

      if(isset($_SESSION['username']))
      {
      //On le deconecte en supprimant simplement les sessions username et userid
      unset($_SESSION['username'], $_SESSION['userid']);


      Si l'utilisateur est connecté, tu le déconnecte... Je comprend pas ?
      1. Je viens de voir ma connerie ^^
        Merci

        J'arrive a me connecter et à aller sur l'accueil désormais sauf que j'aimerais cacher la colonne de droite une fois connecter car
        Nom d'utilisateur
        mot de passe
        Connexion
        Inscription
        pass perdu

        Ne servent plus a rien vu qu'il est connecter ...
      2. J'avoue ne pas comprendre non plus cette logique.
      3. Désolé ...
        Avez vous une idée ?
        Merci
    2. il faut mettre une condition "si pas connecté" pour l'affichage du formulaire de connexion

      <?php
      session_start();
      
      //et à l'endroit où tu veux mettre ton formulaire de connexion:
      if(!isset($_SESSION['username']))
      {
      ?>
      //ton formulaire de connexion
      
      <?php
      }
      
      1. Tu as mis un commentaire PHP en dehors du code PHP ^^
    3. Merci sa marche Alain42
      Mais j'aimerais que s'il est connecté sa m'affiche a la place de
      Nom d'utilisateur
      mot de passe
      Connexion
      Inscription
      pass perdu

      ceci :
      Votre espace membre
      Deconnexion.

      Il suffit juste de refaire une table comme celle que j'ai faite mais je ne sais pas comment faire pour mettre le else dans le php ...

      <?php
      session_start();

      //et à l'endroit où tu veux mettre ton formulaire de connexion:
      if(!isset($_SESSION['username']))
      {
      ?>

      <table style="border:2px solid black;">
      <th colspan="2" style="border:2px solid black;">Espace membre </th>
      <tr>
      <td class="aff"><form name="connexion.php" action="#" method="post">
      <center><label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
      <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
      <input type="submit" value="Connexion" /><br/>
      <a href="sign_up.php">Inscription</a><br>
      <a href="passperdu.html">Pass perdu</a>
      <input type="hidden" name="mode" value="connexion" />
      </td>
      </tr>
      </center>
      </table>
      <?php
      }
      }
      }
      ?>
      1. pour mettre un else en php:

        if(condition){
        //instructions si condition remplie
        }else{
        
        //instructions si condition non  remplie
        }
        


        <?php
        session_start();
        
        //et à l'endroit où tu veux mettre ton formulaire de connexion:
        if(!isset($_SESSION['username']))
        {
        ?>
        
        <table style="border:2px solid black;">
        	<tr>
        	<!-- il faut des <tr meme avec les th -->
        		<th colspan="2" style="border:2px solid black;">Espace membre </th></tr>
        	<tr>
        		<td class="aff">
        		<center><form name="connexion.php" action="" method="post">
        		<label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
        		<label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
        		<input type="submit" name="connexion" value="Connexion" /><br/>
        		<a href="sign_up.php">Inscription</a><br>
        		<a href="passperdu.html">Pass perdu</a>
        		<!-- si tu mets un name au bouton submit, pas besoin de champ hidden ensuite -->
        		<!-- et la balise </form> tu l'as oubliée -->
        		</form></center>
        		</td>
        	</tr>
        	
        </table>
        <?php
        }else{
        	echo '<font color="green">Bonjour '.$_SESSION['username'].' Vous êtes connecté à l\'espace membre.</font>';
        	?>
        	<br /><a href="log_out.php">Déconnexion</a><br />
        	<?php
        }
        
        
        }
        }
        ?>
        

        et dans ton fichier log_out.php tu mets:
        <?php
        session_start() ;
        //destruction de toutes les variable de sessions:
        session_unset() ;
        //destruction de la session:
        session_destroy() ;
        
        header("location: index.php") ; //retour à la page d'acceuil
        ?>
        1. Merci !
          J'ai un soucis :

          <?php
          {
          $ousername = '';
          //On verifie si le formulaire a ete envoye
          if(isset($_POST['username'], $_POST['password']))
          {
          //On echappe les variables pour pouvoir les mettre dans des requetes SQL
          if(get_magic_quotes_gpc())
          {
          $ousername = stripslashes($_POST['username']);
          $username = mysql_real_escape_string(stripslashes($_POST['username']));
          $password = stripslashes($_POST['password']);
          }
          else
          {
          $username = mysql_real_escape_string($_POST['username']);
          $password = $_POST['password'];
          }
          //On recupere le mot de passe de lutilisateur
          $req = mysql_query('select password,id from users where username="'.$username.'"');
          $dn = mysql_fetch_array($req);
          //On le compare a celui quil a entre et on verifie si le membre existe
          if($dn['password']==$password and mysql_num_rows($req)>0)
          {
          //Si le mot de passe es bon, on ne vas pas afficher le formulaire
          $form = false;
          //On enregistre son pseudo dans la session username et son identifiant dans la session userid
          $_SESSION['username'] = $_POST['username'];
          $_SESSION['userid'] = $dn['id'];
          ?>
          <center>
          <div class="message">Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.<br />
          <a href="indexx.php">En cliquant ici</a></div>
          </center>
          <?php
          }
          else
          {
          //Sinon, on indique que la combinaison nest pas bonne
          $form = true;
          $message = 'Erreur dans le Nom d\'utilisateur et/ou dans le mot de passe.';
          }
          }
          else
          {
          $form = true;
          }
          if($form)
          {
          //On affiche un message sil y a lieu
          if(isset($message))
          {
          echo '<div class="message">'.$message.'</div>';
          }
          //On affiche le formulaire
          ?>
          <?php
          session_start();

          //et à l'endroit où tu veux mettre ton formulaire de connexion:
          if(!isset($_SESSION['username']))
          {
          ?>

          <table style="border:2px solid black;">
          <tr>
          <!-- il faut des <tr meme avec les th -->
          <th colspan="2" style="border:2px solid black;">Espace membre </th></tr>
          <tr>
          <td class="aff">
          <center><form name="connexion.php" action="" method="post">
          <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
          <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
          <input type="submit" name="connexion" value="Connexion" /><br/>
          <a href="sign_up.php">Inscription</a><br>
          <a href="passperdu.html">Pass perdu</a>
          <!-- si tu mets un name au bouton submit, pas besoin de champ hidden ensuite -->
          <!-- et la balise </form> tu l'as oubliée -->
          </form></center>
          </td>
          </tr>

          </table>
          <?php
          }else{
          echo '<font color="green">Bonjour '.$_SESSION['username'].' Vous êtes connecté à l\'espace membre.</font>';
          ?>
          <br /><a href="log_out.php">Déconnexion</a><br />
          <?php
          }

          }
          }
          ?>

          Quand je suis connecter j'ai un message :
          Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.
          En cliquant ici

          et quand je reviens sur la page d'accueil j'ai :
          Vous êtes connecté à l'espace membre
          Déconnexion
          1. index.php d'origine si je veux acceder à phpmyadmin

            je suppose que tu veux dire accéder à mysql

            ce sont donc les codes d'accès à mysql qui sont différents en local avec wamp et chez ton hebergeur

            alors il faut que tu fasse deux fichier config.php qui contiendra ces codes

            dans le premier celui en local tu mets:
            <?php
            $host="localhost";
            $user="root";
            $pass=""; //ou mot de passe que tu as mis en installant wamp
            $db="nom_de_ta_base";
            ?>

            tu en fait un autre que tu nommes pareil mais que tu mets dans un répertoire configuration_distante/
            <?php
            //tous ces codes ont été fournis par ton hebergeur
            $host="nom_du_serveur";
            $user="code_utiliateur";
            $pass="ton_mdp";  
            $db="nom_de_la_base_hebergeur";
            ?>


            maintenant dans ton fichier index.php pour connexion à la BDD tu modifies
            mysql_connect('nom_serveur','ton_login','ton_mdp');
            mysql_select_db('ta_base');


            par
            include('config.php');
            mysql_connect($host,$user,$pass);
            mysql_select_db($db);


            tu upload index.php chez ton hebergeur ainsi que le fichier config.php que tu prend dans le dossier configuraion_distante
            1. C'est tout a fait cela merci !
              J'avais modifier mon commentaire pour vous parlez d'un probleme plus urgent qui est :

              <?php
              {
              $ousername = '';
              //On verifie si le formulaire a ete envoye
              if(isset($_POST['username'], $_POST['password']))
              {
              //On echappe les variables pour pouvoir les mettre dans des requetes SQL
              if(get_magic_quotes_gpc())
              {
              $ousername = stripslashes($_POST['username']);
              $username = mysql_real_escape_string(stripslashes($_POST['username']));
              $password = stripslashes($_POST['password']);
              }
              else
              {
              $username = mysql_real_escape_string($_POST['username']);
              $password = $_POST['password'];
              }
              //On recupere le mot de passe de lutilisateur
              $req = mysql_query('select password,id from users where username="'.$username.'"');
              $dn = mysql_fetch_array($req);
              //On le compare a celui quil a entre et on verifie si le membre existe
              if($dn['password']==$password and mysql_num_rows($req)>0)
              {
              //Si le mot de passe es bon, on ne vas pas afficher le formulaire
              $form = false;
              //On enregistre son pseudo dans la session username et son identifiant dans la session userid
              $_SESSION['username'] = $_POST['username'];
              $_SESSION['userid'] = $dn['id'];
              ?>
              <center>
              <div class="message">Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.<br />
              <a href="indexx.php">En cliquant ici</a></div>
              </center>
              <?php
              }
              else
              {
              //Sinon, on indique que la combinaison nest pas bonne
              $form = true;
              $message = 'Erreur dans le Nom d\'utilisateur et/ou dans le mot de passe.';
              }
              }
              else
              {
              $form = true;
              }
              if($form)
              {
              //On affiche un message sil y a lieu
              if(isset($message))
              {
              echo '<div class="message">'.$message.'</div>';
              }
              //On affiche le formulaire
              ?>
              <?php
              session_start();

              //et à l'endroit où tu veux mettre ton formulaire de connexion:
              if(!isset($_SESSION['username']))
              {
              ?>

              <table style="border:2px solid black;">
              <tr>
              <!-- il faut des <tr meme avec les th -->
              <th colspan="2" style="border:2px solid black;">Espace membre </th></tr>
              <tr>
              <td class="aff">
              <center><form name="connexion.php" action="" method="post">
              <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
              <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
              <input type="submit" name="connexion" value="Connexion" /><br/>
              <a href="sign_up.php">Inscription</a><br>
              <a href="passperdu.html">Pass perdu</a>
              <!-- si tu mets un name au bouton submit, pas besoin de champ hidden ensuite -->
              <!-- et la balise </form> tu l'as oubliée -->
              </form></center>
              </td>
              </tr>

              </table>
              <?php
              }else{
              echo '<font color="green">Bonjour '.$_SESSION['username'].' Vous êtes connecté à l\'espace membre.</font>';
              ?>
              <br /><a href="log_out.php">Déconnexion</a><br />
              <?php
              }

              }
              }
              ?>

              Quand je suis connecter j'ai un message :
              Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.
              En cliquant ici

              et quand je reviens sur la page d'accueil j'ai :
              Vous êtes connecté à l'espace membre
              Déconnexion
            2. Quel est le problème ?
            3. Quand je suis connecter j'ai un message :
              Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.
              En cliquant ici

              et quand je reviens sur la page d'accueil j'ai :
              Vous êtes connecté à l'espace membre
              Déconnexion

              J'aimerais avoir toujours que sa :
              Vous êtes connecté à l'espace membre
              Déconnexion
            4. bah,

              <div class="message">Vous êtes bien connecté. Vous pouvez accéder à votre espace membre.


              Tu remplace ça par
              Vous êtes connecté à l'espace membre
              Déconnexion
            5. Mais j'aimerais avoir
              Vous êtes connecté à l'espace membre
              Déconnexion
              dans une table et dans le php je sais pas comment faire ...
          2. c'est exactement ce que je t'ai proposé le 29 nov. 2012 à 21:34