IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

session, détecter et fermer automatiquement une session


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 10
    Points
    10
    Par défaut session, détecter et fermer automatiquement une session
    salut,
    j'ai des soucis sur les sessions... je voudrais tester si une session existe afin de la tuer tout de suite... cas où un administrateur se connecte avec plusieurs sessions différentes

    mon code prend les nouveaux paramètres, mais reste dans l'ancienne session à chaque fois

    j'ai essayé ça (mais ça ne marche hélas pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if(!session_is_registered("login")) {session_destroy();  }
    sinon mes codes sont comme ça, index.php :
    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
     
    	<form action="identit.php" method='post' name='identifier'>
    	<fieldset>
    	<legend>Identification</legend>	
    	<table align="center" border="0">
    	  <tr>
    	    <td>Nom d utilisateur :</td>
    	    <td><input type="text" name="login" maxlength="250"></td>
    	  </tr>
    	  <tr>
    	    <td>Mot de Passe</td>
    	    <td><input type="password" name="pass" maxlength="10"></td>
    	  </tr>
    	  <tr>
    	    <td colspan="2" align="center"><br><br><input type="submit" value="se connecter"></td>
    	  </tr>
    	</table>
    	</fieldset>
    	</form>
    et identit.php :
    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
     
    <?
    include (connexions.php');
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
      extract($_POST);
      $sql = "select pwd, activite from user where login='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
    
      if($data['pwd'] != $pass) {
        echo '<p><font color="#ff0000">Mauvaise saisie de codes. Merci de bien vouloir recommencer</font></p>';
        include('index.php');
        exit;
      }
      else {
    	session_start();
        $_SESSION['login'] = $login;
    	$_SESSION['pass'] = $pass;
    	session_register("login","pass");
    	include ('presentation.php');
    	echo '<font color="#3300ff">Bonjour <b>'.$login.'</b><br>domaine d\'activité : '.$data['activite'].'</font><br><br>';
    	echo '<table border="0" summary="menu administration" align="center">
    	<tr>
    		<td align="center"><A href="hote/php/'.$login.'/index.php"><img src="../images/web_voir.jpg" width="177" height="181" border="2" alt="pour voir vos pages web actuelles"><br>Voir vos pages Web</A><br><br></td>
    		<td align="center"><A href="hote/user_admin.php"><img src="../images/web_gerer.jpg" width="177" height="181" border="2" alt="pour créer ou modifier vos pages web"><br>Gérer vos pages Web</A><br><br></td>
    		<td align="center"><A href="user_mail.php"><img src="../images/web_email.jpg" width="177" height="181" border="2" alt="pour envoyer un email à l administrateur du site"><br>Contacter l\'Administrateur</A><br><br></td>
    	</tr>';
    	if ($data['activite'] == 'administrateur')
    	{echo '	<tr><td align="center"><A href="user_massivemail.php"><img src="../images/web_liste.jpg" width="177" height="181" border="2" alt="pour envoyer un message à la liste de diffusion"><br>Liste de diffusion<br>Administrateur seulement</A></td><td>&nbsp;</td><td align="center"><A href="usu.php"><img src="../images/super-utilisateur.jpg" width="177" height="181" border="2" alt="administrer les comptes d utilisateur"><br>CONSOLE<br>Super Administrateur</A><br><br></td></tr>';}
    	echo '</table>';
    	echo '</div>';
    	echo '</td></tr></table>';
      }    
    }
    else {
      echo '<p><font color="#ff0000">Vous avez oublié de remplir un champ.</font></p>';
       include('index.php');
       exit;
    }
    ?>

    voilou... une idée qqn ?

  2. #2
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    lut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!session_is_registered("login")) {session_destroy();  }
    signifie "si la variable de session login n'existe pas, alors on détruit la session", or c'est l'inverse que tu veux faire il me semble.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    oui tu as raison, le ! m'a échappé... mais cela ne fait rien non plus... mon deuxième log+pwd me permet de passer, mais ça conserve toujours l'ancienne session

    j'ai mis des 'echo' pour voir, ça ne passe pas le test visiblement, mauvaise syntaxe ? autre ?

    ça me fait tourner en bourrique ce truc !

  4. #4
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    et si tu utilisais plutôt le tableau super-global $_SESSION[] ? comme le dit la notice d'avertissement et 3eme commentaire de ceci

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    oui le troisième commentaire semble suggérer de n'utiliser que la super-globale $_session...

    je vais aller voir comment ça fonctionne, mais si y'en a qui ont un tuyau ou deux, je suis preneur !

  6. #6
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par atog
    je vais aller voir comment ça fonctionne, mais si y'en a qui ont un tuyau ou deux, je suis preneur !
    il n'y a qu'à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION['blabla']);

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/11/2012, 22h36
  2. Comment détecter l'ouverture d'une session, sans dll ?
    Par yosthegost dans le forum Delphi
    Réponses: 4
    Dernier message: 24/05/2006, 19h58
  3. Détecter la fermeture d'une session Windows
    Par atao29 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2006, 11h19
  4. Démarrer automatiquement une session avec pass
    Par cyberman.inc dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/08/2005, 17h55
  5. [Servlet] Comment détecter la fin d'une session HTTP
    Par cocula dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/04/2005, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo